2016-02-16 5 views
1

Я хотел бы исправить высоту изображения, но в соответствии с различными устройствами и разрешением dpi.Как установить высоту, пропорциональную ширине в соответствии с разрешением на дюйм устройства в android

<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 вместо размера починки. Я знаю, что андроид работает на dp, но я не могу понять, как я могу сохранить коэффициент для всех устройств. Ширина будет соответствовать родительскому (соответствовать ширине устройства), но высота должна быть соответствующим образом изменена.

Любая идея/предложение?

ответ

5

Вы можете установить динамическую динамику таким образом.

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 

ll.getLayoutParams().height = width/2; 
ll.getLayoutParams().width = width; 
ll.requestLayout(); 
1

Вы можете установить высоту или ширину соотношение мнений внутри LinearLayout используя layout_weight свойства, например:

<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-файлах, и опция должна вернуться к настройке размера программно, как в ответе Хуссенана Азама (вы не знаете, всегда нужно призывать к размеру дисплея).