我想根据不同的设备和dpi来修复imageview的高度。
<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上工作,但我无法弄清楚如何保持所有设备的比例。宽度将与父级匹配(适合设备宽度),但高度需要相应更改。
有任何想法/建议吗?
答案 0 :(得分:5)
您可以像这样动态设置身高。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
ll.getLayoutParams().height = width/2;
ll.getLayoutParams().width = width;
ll.requestLayout();
答案 1 :(得分:1)
您可以使用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>
这将导致Views
的内部LinearLayout
分别占据其宽度的一分之二和三分之二。
否则,如果你必须使用不同的布局,目前无法在.xml文件中执行此操作,并且选项是回退到以编程方式设置大小,就像在Hussnain Azam的回答中一样(你没有总是要调用显示器的大小。