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?
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);
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!
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.
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 -
Ces liens renverront au site des développeurs Android. J'espère que cela vous aide beaucoup.
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 .
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);
En utilisant Kotlin et la bibliothèque Android-ktx, vous pouvez simplement faire
view.updatePadding(top = 42)
É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.
Lors du remplissage par programme, convertissez les valeurs en densité en convertissant pixel en Dp.
Context contect = MainActivity.this; TextView tview = new TextView (contexte); tview.setPaddingRelative (10,0,0,0);