如何根据android

时间:2016-02-16 08:35:35

标签: android android-imageview dpi

我想根据不同的设备和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上工作,但我无法弄清楚如何保持所有设备的比例。宽度将与父级匹配(适合设备宽度),但高度需要相应更改。

有任何想法/建议吗?

2 个答案:

答案 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的回答中一样(你没有总是要调用显示器的大小。