Подтвердить что ты не робот

LinearLayout.LayoutParams как использовать dip...?

Я пытаюсь установить высоту моего LinearLayout до 45 dip.

Как это сделать при расширении LinearLayout?

Сейчас я просто сделал: LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 45);

4b9b3361

Ответ 1

Лучший способ решить эту проблему - создать файл dimens.xml под значениями и поместить туда свои значения dip, а затем в код вы вытащите размеры из этого файла. Для чего нужны ресурсы, не так ли? =)

Вот пример dimens.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="about_image_bottom">0dp</dimen>
</resources>

И вот как вы можете вывести его в код:

RelativeLayout.LayoutParams iv_params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
iv_params.setMargins(0, 0, 0, (int) getResources().getDimension(R.dimen.about_image_bottom));

И затем вы задаете параметры для любого объекта, который вам нужен, в моем случае для ImageView iv:

iv.setLayoutParams(iv_params);

Ответ 2

Вы можете использовать DisplayMatrics и определить плотность экрана. Что-то вроде этого:

int pixelsValue = 5; // margin in pixels
float d = context.getResources().getDisplayMetrics().density;
int margin = (int)(pixelsValue * d);

Надеюсь, что это поможет ^^

Ответ 3

Вероятно, лучшим способом было бы указать его в XML. Замените обычный тег LinearLayout тем, что вы создали для расширения LinearLayout в теге XML:

<com.example.MyLinearLayout 
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent" 
              android:layout_height="45dp" 
              android:orientation="vertical" >
 ....

Подробнее см. здесь.