studio android android-layout android-emulator android-widget padding

studio - textview padding programmatically android



Agregue relleno a la vista mediante programaciĆ³n (8)

Escribir el código siguiente para configurar el relleno, puede ser útil.

TextView ApplyPaddingTextView = (TextView)findViewById(R.id.textView1); final LayoutParams layoutparams = (RelativeLayout.LayoutParams) ApplyPaddingTextView.getLayoutParams(); layoutparams.setPadding(50,50,50,50); ApplyPaddingTextView.setLayoutParams(layoutparams);

Utilice LinearLayout.LayoutParams o RelativeLayout.LayoutParams de acuerdo con el diseño principal de la vista secundaria

Estoy desarrollando la aplicación Android v2.2.

Tengo un fragmento

En la devolución de llamada onCreateView(...) de mi clase de fragmento, inflando un diseño al fragmento como a continuación:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login, null); return view; }

El archivo de diseño inflado anterior es (login.xml):

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Username" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Username" /> </LinearLayout>

Me gustaría establecer un paddingTop en el elemento <LinearLayout> , y quiero hacerlo en el código Java en lugar de hacerlo en xml.

¿Cómo establecer paddingTop en <LinearLayout> en mi código de clase Java de fragmento?


Mientras se acumula programáticamente, conviértanse a valores relacionados con la densidad convirtiendo pixel a Dp.


Para responder a tu segunda pregunta:

view.setPadding(0,padding,0,0);

como sugirieron SpK y Jave, establecerán el relleno en píxeles. Puede configurarlo en dp calculando el valor dp de la siguiente manera:

int paddingDp = 25; float density = context.getResources().getDisplayMetrics().density int paddingPixel = (int)(paddingDp * density); view.setPadding(0,paddingPixel,0,0);

¡Espero que ayude!


Puede configurar el relleno a su vista de forma gráfica a través del código a continuación -

view.setPadding(0,1,20,3);

Y, también hay diferentes tipos de relleno disponibles -

Padding

PaddingBottom

PaddingLeft

PaddingRight

PaddingTop

Estos enlaces se referirán al sitio de Desarrolladores de Android. Espero que esto te ayude mucho.


Si almacena el relleno en los archivos de recursos, simplemente puede llamar

int padding = getResources().getDimensionPixelOffset(R.dimen.padding);

Hace la conversión por ti.


Usar TypedValue es una manera mucho más limpia de convertir a píxeles en comparación con el cálculo manual:

float paddingDp = 10f; // Convert to pixels int paddingPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, paddingDp, context.getResources().getDisplayMetrics()); view.setPadding(paddingPx, paddingPx, paddingPx, paddingPx);

Básicamente, TypedValue.applyDimension convierte el relleno deseado en píxeles de forma adecuada según las propiedades de visualización del dispositivo actual.

Para obtener más información, consulte: TypedValue.applyDimension Docs .


use el siguiente método para configurar el relleno dinámicamente

setPadding(int left, int top, int right, int bottom)

Ejemplo:

view.setPadding(2,2,2,2);


view.setPadding(0,padding,0,0);

Esto establecerá el relleno superior en padding -pixels.

Si desea establecerlo en dp en su lugar, puede hacer una conversion :

float scale = getResources().getDisplayMetrics().density; int dpAsPixels = (int) (sizeInDp*scale + 0.5f);