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 ^^