android 如何根据设备 dpi 设置高度与宽度成比例
How to set height proportional to width according to device dpi in android
我想固定imageview的高度,但要根据不同的设备和dpi。
<ImageView
android:id="@+id/imgFood"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_no_img" />
到目前为止,我将高度固定为 200dp,但我想保持 1:2 的比例而不是固定大小。我知道 android 适用于 dp,但我无法弄清楚如何保持所有设备的比率。宽度将与父级匹配(适合设备宽度)但高度需要相应更改。
任何idea/suggestion?
您可以像这样动态设置身高。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
ll.getLayoutParams().height = width/2;
ll.getLayoutParams().width = width;
ll.requestLayout();
您可以使用 layout_weight
属性 在 LinearLayout
中设置视图的高度或宽度比例,例如:
<LinearLayout
android:weightSum="3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<View
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<View
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
这将导致 LinearLayout
的内部 Views
分别占据其宽度的三分之一和三分之二。
否则,如果您必须使用不同的布局,目前无法在 .xml 文件中执行此操作,并且可以选择回退到以编程方式设置大小,就像 Hussnain Azam 的回答(虽然你不必总是要求显示器的大小)。
我想固定imageview的高度,但要根据不同的设备和dpi。
<ImageView
android:id="@+id/imgFood"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_no_img" />
到目前为止,我将高度固定为 200dp,但我想保持 1:2 的比例而不是固定大小。我知道 android 适用于 dp,但我无法弄清楚如何保持所有设备的比率。宽度将与父级匹配(适合设备宽度)但高度需要相应更改。
任何idea/suggestion?
您可以像这样动态设置身高。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
ll.getLayoutParams().height = width/2;
ll.getLayoutParams().width = width;
ll.requestLayout();
您可以使用 layout_weight
属性 在 LinearLayout
中设置视图的高度或宽度比例,例如:
<LinearLayout
android:weightSum="3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<View
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<View
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
这将导致 LinearLayout
的内部 Views
分别占据其宽度的三分之一和三分之二。
否则,如果您必须使用不同的布局,目前无法在 .xml 文件中执行此操作,并且可以选择回退到以编程方式设置大小,就像 Hussnain Azam 的回答(虽然你不必总是要求显示器的大小)。