#android #android-layout #textview #android-tablelayout
#Android #android-layout #textview #android-tablelayout
Вопрос:
Мне нужен один слева и справа. Все настройки должны выполняться с помощью кода. Скриншот:
Код:
super.onCreate(savedInstanceState);
setContentView(R.layout.overview);
loadData();
TableLayout tl = (TableLayout)findViewById(R.id.tl);
TableRow tr = new TableRow(this);
TableRow tr2 = new TableRow(this);
tr.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
//tr2.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
//tr2.setLayoutParams(new ViewGroup.LayoutParams(L., LayoutParams.WRAP_CONTENT));
TextView tv = new TextView(this);
TextView tv2 = new TextView(this);
//tv.se
tv.setGravity(Gravity.LEFT);
tv2.setGravity(Gravity.RIGHT);
tv.setText("Test");
tv2.setText("Test");
//tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1f));
//tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
tv2.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1f));
//tv.setTextSize(50);
//tv2.setTextSize(50);
tr.addView(tv);
tr.addView(tv2);
//tl.addView(tr);
//setContentView(tl);
tl.addView(tr, new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
}
Макет:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@ id/tl"
android:stretchColumns="*">
</TableLayout>
Комментарии:
1. Почему вы не используете XML-макет для всех
TextView
элементов и только дляTableLayout
?2. Вам нужно использовать макет таблицы? Похоже, что относительный макет лучше соответствует вашим потребностям.
3. @user5779 Я думаю, что tv2 отключает телевизор, попробуйте изменить текст любого телевизора, чтобы увидеть это…..
4. появляется только первое текстовое представление
Ответ №1:
Параметры LAYOUT используются представлениями, чтобы сообщить своим родителям, как они хотят быть выложены. В Android определено около 13 различных типов LayoutParams. например. LinearLayout.Layoutparams, ViewGroup.LayoutParams, панель действий.LayoutParams и т.д.
Итак, если вы добавляете TextView в LinearLayout, это означает, что LinearLayout является родительским для TextView, поэтому при определении параметров макета для TextView следует использовать LinearLayout.LayoutParams, а не ViewGroup .LayoutParams
в вашем случае вы добавляете два textview в строку таблицы, поэтому, очевидно, вам следует использовать TableRow.LayoutParams
поэтому замените эту строку
tv2.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1f));
с
tv2.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1f));
Напишите аналогично для tv
Это был мой первый пост на этом сайте. Надеюсь, это будет полезно 🙂
Ответ №2:
Я думаю, вам нужно использовать:
android:stretchColumns="0,1"
Отличный пример можно найти здесь
сделайте это:
удалите 1f из tv2 layoutparams.
tl.addView(tr, новый TableLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams .WRAP_CONTENT));
это может решить вашу проблему в соответствии с указанной ссылкой.