Как установить поля макета текстовых полей редактирования? - PullRequest
8 голосов
/ 27 января 2011

В макете таблицы у меня есть таблица, и в этой таблице у меня есть 6 текстовых полей редактирования, и я хочу установить поля макета для этих 6 текстовых полей редактирования

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

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

Прежде всего то, что вы должны знать: в соответствии с Официальными страницами для разработчиков Android , Представления (и TextView являются производными от View) не поддерживают настройку Margin, но ViewGroups (например, LinearLayout), RelativeLayout и т.д ...) делать.

Итак, вы можете сделать следующее:

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

Это установит для всех детей поле в 5 пикселей - я пробовали это сработало для меня (хотя с LinearLayout с вертикальным выравниванием).Сделайте попытку и дайте мне знать, если я смогу помочь дальше :).

Приветствия,

Ready4Fajir

4 голосов
/ 27 января 2011

РЕДАКТИРОВАТЬ:
Я хотел бы попробовать с XML ниже (вы, конечно, обновить идентификатор и т. Д.). «Волшебство» в XML заключается в том, что он равномерно распределяет всю доступную ширину между TextViewEditText во втором ряду).

<?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>

В вашем Java-коде вы можете получить доступ к вашим представлениям EditText, например:

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

Теперь я проигнорировал тот факт, что вам нужно создавать свой EditText программно. Вам действительно , действительно нужно создать их на Java? (Почему?)

СТАРЫЙ ОТВЕТ:
Если вы просто хотите установить поля разметки для вашего представления EditText, то, конечно, вы можете использовать вызов функции setMargins(left, top, right, bottom) для переменной LayoutParams.

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

Если в конечном итоге вы хотите равномерно распределить все доступное пространство между шестью представлениями EditText в строке таблицы, я бы посоветовал вам взглянуть на следующий пост: TableLayout с двумя столбцами и 50% точно для каждого столбца

...