Je suis Noob dans android. Mon problème à propos de la hauteur utilisable des appareils 18: 9. Lorsque j'essaie d'obtenir un écran utilisable dans ces proportions, mon application est en train de réveiller tous les appareils Android, mais quand je compile sur Samsung Galaxy s8 ça ne marche pas. J'essaye d'obtenir l'écran utilisable des dispositifs. je l'ai déjà méthode éprouvée qui, dans ces liensHo pour obtenir s8 écran utilisable android?
https://stackoverflow.com/questions/43628047/how-to-support-189-aspect-ratio-in-android-apps
https://android-developers.googleblog.com/2017/03/update-your-app-to-take-advantage-of.html
Et j'utilise dynamiquement
DisplayMetrics metrics = this.getResources().getDisplayMetrics(); width = metrics.widthPixels; height = metrics.heightPixels ;
et moi avons essayé
private int getSoftButtonsBarHeight() {
// getRealMetrics is only available with API 17 and +
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
if (realHeight > usableHeight)
return realHeight - usableHeight;
else
return 0;
}
return 0;
}
Et quand j'essaie de paramétrer la hauteur de MATCH_PARENT, ça marche bien. Mais j'ai besoin de trouver un pixel de hauteur utilisable pour dessiner mes autres vues proportionnellement.
Actuellement, ce code DisplayMetrics metrics = this.getResources().getDisplayMetrics(); height = metrics.heightPixels ;
fonctionne dans mon activité mais lorsque j'essaie de l'utiliser dans une autre fenêtre que j'étend depuis FramaLayout et ajouter à l'activité, cela ne fonctionne pas.
Voici mon bloc de code
public class StudentLoginActivity extends Activity { ...
FrameLayout.LayoutParams containerParams = new ScrollView.LayoutParams(width, height-sb);
container = new FrameLayout(this);
container.setLayoutParams(containerParams);
container.setBackgroundColor(Color.rgb(248,248,248));
loginStudentView = new StudentLoginView(this);
container.addView(loginStudentView); ...
}
public class StudentLoginView extends FrameLayout { ...
FrameLayout.LayoutParams cp = new FrameLayout.LayoutParams(width, height);
setLayoutParams(cp); ...
}
Mais ce problème lié à Android navigationBar hauteur parce que quand je montre la barre de navigation il n'y a pas de problème, mais si je hide navigationBar il n'est pas redimensionner l'application fonctionne toujours qu'il y a une barre de navigation à l'écran (mais je cache le navigationBar).
Mon problème est très similaire ce lien
android Navigation Bar hiding and persantage of usable screen overlap
Qu'appelez-vous la hauteur utile? – Juan
Le deuxième lien est collé à tort. – Juan