Agregar relleno en la vista mediante programación

Resuelto Leem.fin asked hace 54 años • 15 respuestas

Estoy desarrollando la aplicación Android v2.2.

Tengo un Fragment. En la onCreateView(...)devolución de llamada de mi clase de fragmento, infla un diseño al fragmento como se muestra 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 a paddingTopen el elemento anterior <LinearLayout>y quiero hacerlo en el código Java en lugar de hacerlo en xml.

¿ Cómo configurar paddingTopen <LinearLayout>mi fragmento el código de clase Java?

Leem.fin avatar Jan 01 '70 08:01 Leem.fin
Aceptado

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

Esto establecerá el relleno superior en padding-píxeles.

Si desea configurarlo dp, puede realizar una conversión :

float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
Jave avatar Mar 13 '2012 14:03 Jave

Para responder a su segunda pregunta:

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

como sugirieron SpK y Jave, establecerá el relleno en píxeles. Puede configurarlo en dp calculando el valor de 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);
Christian Orth avatar Mar 13 '2012 14:03 Christian Orth

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

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

Hace la conversión por ti.

Miklos Jakab avatar Sep 16 '2013 12:09 Miklos Jakab

Usando Kotlin y la biblioteca android-ktx, simplemente puedes hacer

view.updatePadding(top = 42)

Ver documentos aquí

Andrew Orobator avatar Oct 30 '2018 19:10 Andrew Orobator