wrap_content studio linearlayout layout_below layout_above android

android - studio - linearlayout gravity



LinearLayout.LayoutParams ¿cómo usar dip...? (3)

Estoy tratando de ajustar la altura de mi LinearLayout a 45 dip.

¿Cómo puedo hacer esto cuando extiendo LinearLayout ?

En este momento acabo de hacer: LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 45);


La mejor manera de resolver este tipo de problema es crear un archivo dimens.xml con valores y poner allí sus valores de inmersión, y luego, en el código, extraiga las dimensiones de ese archivo. Para eso son los recursos, ¿verdad? =)

Aquí hay un ejemplo de un dimens.xml :

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

Y así es como se puede sacar en código:

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));

Y luego configura los parámetros a cualquier objeto que necesite, en mi caso a ImageView iv:

iv.setLayoutParams(iv_params);


Probablemente la mejor manera sería especificarlo en XML. Reemplace la etiqueta LinearLayout normal con la clase que haya creado para extender LinearLayout en la etiqueta 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" > ....

Vea here para más información.


Puede utilizar DisplayMatrics y determinar la densidad de la pantalla. Algo como esto:

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

Espero que ayude ^^