根据屏幕尺寸调整设备

时间:2019-12-04 03:12:10

标签: android

我不知道这些设备是否确实存在,但是考虑到它们可能存在,请考虑以下两个设备:

devices

我正在尝试调整小部件的大小,以使其具有一定百分比的宽度,高度等,并且由于android设备被分类为x,xhpi,xxhdpi等,我认为dpi是调整其大小的一种好方法,但是您可以在上面看到并非如此。

一个例子:如果设备很小,那么我希望菜单栏占据一半的屏幕,如果设备很大,我希望它占据三分之一的屏幕。

调整这些小部件的更好方法是什么?

编辑:如果我使用ConstraintLayout,则某些按钮必须使用其大小进行硬编码,但是我希望按钮根据屏幕大小变得更大或更小。

2 个答案:

答案 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等。