Выравнивание TextViews в TableRow
Я пытаюсь выровнять 3 вида текста в tablerow следующим образом:
|------------------------------------------------|
| {TextView1} {TextView2} {TextView3} |
|------------------------------------------------|
// TextView 1, 2 Left aligned
// TextView 3 Right aligned
кроме того, строка таблицы должна заполнить ширину таблицы.
С помощью кода ниже я могу достичь только этого:
|------------------------------------------------|
| {TextView1} {TextView2} {TextView3} |
|------------------------------------------------|
I код:
TableRow tr = new TableRow(myActivity.this);
TextView tvLeft = new TextView(myActivity.this);
tvLeft.setText(values[0]);
TextView tvCenter = new TextView(myActivity.this);
tvCenter.setText(values[1]);
TextView tvRight = new TextView(myActivity.this);
tvRight.setText(values[2]);
tvRight.setGravity(Gravity.RIGHT);
tr.addView(tvLeft);
tr.addView(tvCenter);
tr.addView(tvRight);
myTable.addView(tr);
правое текстовое представление не тяготеет вправо, а строка таблицы не заполняет ширину таблицы. Нужно ли использовать веса в текстовых представлениях?
Edit: Добавлен TableLayout:
<TableLayout
android:layout_height="wrap_content"
android:id="@+id/myTable"
android:layout_width="fill_parent"
>
</TableLayout>
2 ответов
Второй Выстрел
Я не уверен, создаете ли вы TableLayout программно или в XML или какие свойства, но похоже, что вы хотите
(в Java)
myTable.setColumnStretchable(2, true);
(в XML)
android:stretchColumns="2"
Я думаю, что относительный макет лучше. Попробуйте это
RelativeLayout tr = new RelativeLayout(myActivity.this);
TextView tvLeft = new TextView(myActivity.this);
tvLeft.setText(values[0]);
TextView tvCenter = new TextView(myActivity.this);
tvCenter.setText(values[1]);
TextView tvRight = new TextView(myActivity.this);
tvRight.setText(values[2]);
tr.addView(tvLeft);
RelativeLayout.LayoutParams relativeLayoutParamsCenter = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeLayoutParamsCenter.addRule(RelativeLayout.RIGHT_OF, tvLeft.getId());
tr.addView(tvCenter,relativeLayoutParamsCenter);
RelativeLayout.LayoutParams relativeLayoutParamsRight = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeLayoutParamsRight.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
tr.addView(tvRight,relativeLayoutParamsRight);
myTable.addView(tr);