我不知道这些设备是否确实存在,但是考虑到它们可能存在,请考虑以下两个设备:
我正在尝试调整小部件的大小,以使其具有一定百分比的宽度,高度等,并且由于android设备被分类为x,xhpi,xxhdpi等,我认为dpi是调整其大小的一种好方法,但是您可以在上面看到并非如此。
一个例子:如果设备很小,那么我希望菜单栏占据一半的屏幕,如果设备很大,我希望它占据三分之一的屏幕。
调整这些小部件的更好方法是什么?
编辑:如果我使用ConstraintLayout,则某些按钮必须使用其大小进行硬编码,但是我希望按钮根据屏幕大小变得更大或更小。
答案 0 :(得分:1)
首先,出于对使用百分比的要求,可以使用ConstraintLayout。我建议开始使用official training documentation。 ConstraintLayout相对较新(2017年2月首次发布),因此更新的第三方教程不多-但应该有足够的信息来回答您必须开始的任何问题。
这是一个简短的例子:
<MenuBar
android:layout_width="wrap_content"
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.5" />
对于问题的第二部分,您可以像上面提到的那样为备用资源提供不同的配置限定符,例如xxhdpi
。有关here的更多信息。要将浮点值以二维形式存储在您要在res/values-[config_qualifiers]
的dimen.xml中声明的两种设备尺寸中。
<item name="bottom_menu_bar_height_percent" type="dimen" format="float">0.3</item>
从xml引用
<MenuBar
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_constraintHeight_percent=
"@dimen/bottom_menu_bar_height_percent" />
希望这会有所帮助:)
答案 1 :(得分:1)
启动应用时,查找显示器的宽度和高度。
使用此代码,您可以获取运行时显示的宽度和高度:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
根据您的高度和宽度onCreate
方法,以编程方式设置组件,例如Button,Textview等。