Frage Wie legen Sie die Layout-Ränder von Bearbeitungs-Textfeldern fest?


Im Tabellenlayout habe ich eine Tabelle und in dieser Tabelle habe ich 6 Textfelder bearbeiten und ich möchte die Layout-Ränder für diese 6 Bearbeitungsfelder festlegen

TableLayout t1=(TableLayout)findViewById(R.id.table_layout01);

  TableRow tr1=new TableRow(inventory.this);
  tr1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));


  tr1.setBackgroundColor(Color.BLACK);
  EditText ed6=new EditText(inventory.this);
  //ed6.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  /*ViewGroup.MarginLayoutParams editmargin=new ViewGroup.MarginLayoutParams(ViewGroup.MarginLayoutParams.FILL_PARENT,ViewGroup.MarginLayoutParams.WRAP_CONTENT);
  editmargin.setMargins(leftMargin, rightMargin, topMargin, bottomMargin);*/


  ed6.setTextColor(Color.BLACK);
  ed6.setBackgroundColor(Color.WHITE);


  ed6.setText("1");
        tr1.addView(ed6);



  EditText ed7=new EditText(inventory.this);
  //ed7.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  ed7.setTextColor(Color.BLACK);
  ed7.setBackgroundColor(Color.WHITE);
  ed7.setText("2");

  tr1.addView(ed7);

  EditText ed8=new EditText(inventory.this);
  //ed8.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  ed8.setTextColor(Color.BLACK);
  ed8.setBackgroundColor(Color.WHITE);
  ed8.setText("3");

  tr1.addView(ed8);

  EditText ed9=new EditText(inventory.this);
  //ed9.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  ed9.setTextColor(Color.BLACK);
  ed9.setBackgroundColor(Color.WHITE);
  ed9.setText("4");

  tr1.addView(ed9);

  EditText ed10=new EditText(inventory.this);
  //ed10.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  ed10.setTextColor(Color.BLACK);
  ed10.setText("5");
  ed10.setBackgroundColor(Color.WHITE);

  tr1.addView(ed10);

  EditText ed11=new EditText(inventory.this);
  //ed11.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  ed11.setTextColor(Color.BLACK);
  ed11.setText("6");
  ed11.setBackgroundColor(Color.WHITE);

  tr1.addView(ed11);

  t1.addView(tr1);

8
2018-01-27 09:47


Ursprung


Antworten:


vor allem etwas, was Sie wissen sollten: Laut Offizielle Android Dev-Seiten, Ansichten (und eine TextView von View abgeleitet wird) unterstützen nicht die Einstellung von Margin, sondern ViewGroups (wie z LinearLayout, RelativeLayout usw. ...).

Was du also tun könntest, ist folgendes:

TableLayout.LayoutParams params = new TableLayout.LayoutParams();
params.setMargins(5, 5, 5, 5);
TextView view = new TextView(this);
view.setLayoutParams(params);

Dies würde den Rand für alle Kinder auf 5 Pixel setzen - ich habe es versucht und es funktioniert für mich (wenn auch mit einem LinearLayout mit vertikaler Ausrichtung). Gib es eine Chance und lass es mich wissen, wenn ich weiter helfen kann :).

Prost,

Ready4Fajir


8
2018-05-06 13:21



BEARBEITEN:
Ich würde versuchen, mit dem XML unten (Sie würden natürlich die ID usw. aktualisieren). Die "Magie" in der XML ist, dass sie alle verfügbaren Breite gleichmäßig verteilt TextView's (und die EditTextist in der zweiten Reihe).

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- The first "row" -->    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="TextView 01"
            android:id="@+id/textView01" />

        <!-- Here you'd add your other five TextView's accordingly -->

    </LinearLayout>

    <!-- The second "row" -->    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="TextView 01"
            android:id="@+id/editText01" />

        <!-- Here you'd add your other five EditText's accordingly -->

    </LinearLayout>
</LinearLayout>

In Ihrem Java-Code könnten Sie dann auf Ihre EditText-Ansichten zugreifen, wie:

EditText editText01 = (EditText) findViewById(R.id.editText01);
editText01.setText("1");

Ich habe jetzt die Tatsache ignoriert, dass Sie Ihre EditText programmatisch erstellen müssen. Machst du Ja wirklich, Ja wirklich müssen sie in Java erstellt werden? (Warum?)

ALTE ANTWORT:
Wenn Sie nur die Layout - Ränder für Ihre EditText - Ansicht festlegen möchten, können Sie das verwenden setMargins(left, top, right, bottom) Funktionsaufruf auf der LayoutParams Variable.

int left = 6;
int top = 12;
int right = 6;
int bottom = 6;

TableRow.LayoutParams params = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);

EditText edXY = new EditText(inventory.this);
edXY.setLayoutParams(params);

Wenn Sie letztendlich den gesamten verfügbaren Speicherplatz gleichmäßig auf die sechs EditText-Ansichten in einer Tabellenzeile verteilen möchten, sollten Sie sich den folgenden Beitrag ansehen: 2-spaltiges TableLayout mit 50% genau für jede Spalte


4
2018-01-27 10:21