Программно назначить вес столбца в строке, в TableLayout - PullRequest
1 голос
/ 10 сентября 2011

Я хочу определить только одну строку в моей таблице.К этой строке я хочу добавить 3 столбца со следующими значениями ширины:

textView1: должен быть таким же широким, как его содержимое

viewDivider: должен быть шириной 2 пикселя

TextView2: должен занимать оставшуюся часть стола.

Однако я не могу достичь вышеуказанного макета программно.Вот код:

public class Copy_2_of_Test extends Activity {
 TableLayout tableLayout = null;
 TextView textView1 = null;
 TextView textView2 = null;
 View viewDivider = null;

 TableLayout tab = null;

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView (R.layout.test);
        tableLayout = (TableLayout)this.findViewById(R.id.mainTable);
        addViews();
      }

      private void addViews() {
       // table row with layout params of type TableLayout.LayoutParams
       TableRow tr = new TableRow(this);
        tr.setLayoutParams(new TableLayout.LayoutParams(
                            LayoutParams.FILL_PARENT, 
                            LayoutParams.FILL_PARENT));

       // Textview 1 with layout params of type TableRow.LayoutParams
        textView1 = new TextView(this);
        textView1.setText("Value1");
        textView1.setTextColor(Color.BLACK);
        textView1.setBackgroundColor(Color.YELLOW);
        textView1.setLayoutParams(new TableRow.LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.FILL_PARENT));
        tr.addView(textView1);

        viewDivider = new View (this);
        viewDivider.setLayoutParams(new TableRow.LayoutParams(
                            2,
                            LayoutParams.FILL_PARENT));
        viewDivider.setBackgroundColor(Color.MAGENTA);
        tr.addView(viewDivider);


       // Textview 2 with layout params of type TableRow.LayoutParams
        textView2 = new TextView(this);
        textView2.setText("Value2 Value2  Value2  Value2 ");
        textView2.setTextColor(Color.BLACK);
        textView2.setBackgroundColor(Color.YELLOW);
        textView2.setLayoutParams(new TableRow.LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.FILL_PARENT));
        tr.addView(textView2);

        // Add row to TableLayout. 
        tableLayout.addView(tr,new TableLayout.LayoutParams(
             LayoutParams.FILL_PARENT,
             LayoutParams.FILL_PARENT));
   }

    }

А вот test.xml:

     <?xml version="1.0" encoding="utf-8"?>
     <TableLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:stretchColumns="*"
       android:background="@color/black"
       android:id="@+id/mainTable"> 

     </TableLayout>

У меня возникают следующие проблемы с приведенным выше макетом:

1) textView1 занимает большеширина, что его содержимое.

2) viewDivider занимает много ширины и не ограничивается 2px

Спасибо за помощь.

1 Ответ

0 голосов
/ 10 сентября 2011

Попробуйте использовать метод setWidth () для установки ширины.

Для справки

...