LinearLayout.LayoutParams как использовать dip...?
Я пытаюсь установить высоту моего LinearLayout
до 45 dip.
Как это сделать при расширении LinearLayout
?
Сейчас я просто сделал: LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 45);
Ответы
Ответ 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" >
....
Подробнее см. здесь.