web-dev-qa-db-fra.com

Ajouter un remplissage à l'affichage par programme

Je développe l'application Android 2.2. 

J'ai un fragment .

Dans le callback onCreateView(...) de ma classe fragment, je gonfle une mise en page dans le fragment, comme ci-dessous:

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

    return view;
}

Le fichier de disposition gonflé ci-dessus est (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>

Je voudrais définir un paddingTop à l'élément <LinearLayout> ci-dessus, et je veux le faire dans le code Java au lieu de le faire au format xml.

Comment définir paddingTop sur <LinearLayout> dans mon code de classe de fragment Java?

193
Leem.fin

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

Cela définira le remplissage supérieur sur padding- pixels. 

Si vous voulez plutôt le définir dans dp, vous pouvez faire un conversion :

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

Pour répondre à votre deuxième question:

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

comme suggéré par SpK et Jave, définira le remplissage en pixels. Vous pouvez le définir dans dp en calculant la valeur de dp comme suit:

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

J'espère que cela pourra aider!

86
Chris Conway

Si vous stockez le remplissage dans des fichiers de ressources, vous pouvez simplement appeler

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

Il fait la conversion pour vous.

79
Miklos Jakab

Vous pouvez définir le remplissage de votre vue de manière grammaticale dans le code ci-dessous - 

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

Et, il existe également différents types de rembourrage disponibles - 

Rembourrage

PaddingBottom

PaddingLeft

PaddingRight

PaddingTop

Ces liens renverront au site des développeurs Android. J'espère que cela vous aide beaucoup.

12
Praveenkumar

Utiliser TypedValue est une méthode beaucoup plus simple de conversion en pixels par rapport au calcul manuel:

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

TypedValue.applyDimension convertit le remplissage souhaité en pixels de manière appropriée en fonction des propriétés d'affichage du périphérique actuel.

Pour plus d'informations, voir: TypedValue.applyDimension Docs .

7
i2097i

utiliser la méthode ci-dessous pour définir le remplissage de manière dynamique 

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

Exemple :

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

En utilisant Kotlin et la bibliothèque Android-ktx, vous pouvez simplement faire 

view.updatePadding(top = 42)

Voir les documents ici

4
Andrew Orobator

Écrivez le code suivant pour définir le remplissage, cela peut vous aider.

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

  layoutparams.setPadding(50,50,50,50);

  ApplyPaddingTextView.setLayoutParams(layoutparams);

Utilisez LinearLayout.LayoutParams ou RelativeLayout.LayoutParams conformément à la disposition parent de la vue enfant.

3
Manikandan K

Lors du remplissage par programme, convertissez les valeurs en densité en convertissant pixel en Dp.

1
Bhagya

Context contect = MainActivity.this; TextView tview = new TextView (contexte); tview.setPaddingRelative (10,0,0,0);

0
Siddhartha Halder