it-swarm.com.de

Füllen Sie die Ansicht programmgesteuert hinzu

Ich entwickle Android v2.2 App. 

Ich habe ein Fragment .

Im onCreateView(...)-Callback meiner Fragment-Klasse füge ich ein Layout wie folgt zum Fragment hinzu:

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

    return view;
}

Die oben aufgeblähte Layoutdatei lautet (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>

Ich möchte ein paddingTop auf das obige <LinearLayout> -Element setzen, und ich möchte es im Java code tun, anstatt es in xml zu tun.

Wie setze ich paddingTop auf <LinearLayout> in meinem Java-Klassencode?

193
Leem.fin

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

Dadurch wird die obere Auffüllung auf padding- Pixel gesetzt. 

Wenn Sie es stattdessen in dp setzen möchten, können Sie eine Konvertierung durchführen:

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

Um Ihre zweite Frage zu beantworten:

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

wie von SpK und Jave vorgeschlagen, wird die Auffüllung in Pixel festgelegt. Sie können es in dp einstellen, indem Sie den dp-Wert wie folgt berechnen:

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

Hoffentlich hilft das!

86
Chris Conway

Wenn Sie die Auffüllung in Ressourcendateien speichern, können Sie einfach anrufen

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

Es erledigt die Konvertierung für Sie.

79
Miklos Jakab

Sie können die Auffüllung Ihrer Ansicht anpassen, indem Sie den Code unten programmgesteuert verwenden 

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

Und es gibt auch verschiedene Arten von Polsterungen - 

Polsterung

PaddingBottom

PaddingLeft

PaddingRight

PaddingTop

Diese Links verweisen auf die Android-Entwickler-Site. Hoffe, das hilft dir sehr.

12
Praveenkumar

Die Verwendung von TypedValue ist eine wesentlich sauberere Art der Konvertierung in Pixel im Vergleich zur manuellen Berechnung

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

Im Wesentlichen konvertiert TypedValue.applyDimension die gewünschte Auffüllung in Pixel entsprechend den Anzeigeeigenschaften des aktuellen Geräts.

Weitere Informationen finden Sie unter: TypedValue.applyDimension Docs .

7
i2097i

verwenden Sie die Methode unten, um die Auffüllung dynamisch einzustellen 

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

Beispiel:

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

Mit Kotlin und der Android-ktx-Bibliothek können Sie dies einfach tun 

view.updatePadding(top = 42)

Siehe Dokumente hier

4
Andrew Orobator

Schreiben Sie den folgenden Code, um die Auffüllung festzulegen. Dies kann Ihnen helfen.

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

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

  ApplyPaddingTextView.setLayoutParams(layoutparams);

Verwenden Sie LinearLayout.LayoutParams oder RelativeLayout.LayoutParams entsprechend dem übergeordneten Layout der untergeordneten Ansicht

3
Manikandan K

Bei programmgesteuertem Padding werden die Werte in Dichte bezogen, indem Pixel in Dp umgewandelt werden.

1
Bhagya

Context contect = MainActivity.this; TextView tview = neuer TextView (Kontext); tview.setPaddingRelative (10,0,0,0);

0