例如,我们有像素。但是,像素不是恒定的。我认为高分辨率的android屏幕会有更多的像素。
然后我们有密度,似乎没什么帮助。它不像像素那么精确,仍然不恒定。高分辨率将具有大量“密度”
我们是否有类似屏幕尺寸的10%。程序员这样做是否常见?
答案 0 :(得分:3)
从不(或几乎从不)使用绝对像素。
如果您想使用屏幕布局的百分比,请使用layout_weight
。
以下精简的XML布局文件显示了一个垂直LinearLayout
,其中有两个TextView
小部件,每个小部件位于自己的LinearLayouts
内。内部LinearLayouts
的高度设置为0dp
,但“权重”(0.9 + 0.1)的“总和”等于1,因此第一个内部LinearLayout
会自动扩展到90%屏幕的高度,而第二个得到10%。
你使用的数字并不重要......它们可能是9& 1或90& 10或900& 100 ...它归结为总和以及每个代表的百分比。布局通胀过程将完成剩下的工作而无需了解绝对像素。
<LinearLayout
android:orientation="vertical"
... >
<LinearLayout
...
android:layout_height="0dp"
android:layout_weight="0.9" >
<Textview
... >
</LinearLayout>
<LinearLayout
...
android:layout_height="0dp"
android:layout_weight="0.1" >
<Textview
... >
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
答案是不,你没有。但你可以制作自己喜欢的屏幕百分比。您无法在xml中使用它,但您可以从代码中动态设置它。以下方法可用于获取屏幕的高度和宽度:
public static int getScreenHeight(Context context) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return(metrics.heightPixels);
}
public static int getScreenWidth(Context context) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return(metrics.widthPixels);
}
答案 2 :(得分:0)
据我所知,没有类似的东西。
但您可以使用自己的代码实现相同的功能。获取显示的宽度和高度,然后在设置布局参数之前对它们进行自己的操作。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
yourLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
(width/2), height/4)); // assuming that you want 50% width n 25% height of the display.