TextView layout_gravity не работает программно - PullRequest
0 голосов
/ 20 октября 2011

Я искал вокруг и нашел много возможных решений для центрирования текстового представления в макете.Но никто не работал для меня.Мой текстовый вид находится в TableLayout, который описывается следующим xml:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/schedule_main_holder">
    <TableLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:stretchColumns="0"
      android:id="@+id/schedule_table_entry">
   </TableLayout>
</LinearLayout>

Я делаю создание новой TableRow, а затем добавляю к ней TextView и ListView ... но у textview естьцентрироваться вертикально.Для этого я делаю:

TableRow row = new TableRow(this);

        TextView tview = new TextView(this);
        tview.setText("Wednesday");
        TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL);
        tview.setLayoutParams(layoutParams);
        row.addView(tview);

Проблема в том, что TextView всегда находится сверху ячейки, а не посередине, как следует.Я перепробовал несколько комбинаций (даже метод FrameLayout описан в другом ответе), и я не могу установить текстовое представление в центре ячейки таблицы.

Заранее спасибо

1 Ответ

1 голос
/ 20 октября 2011

Во-первых, есть два типа гравитации. Я думаю, что вы используете обычную гравитацию, а не макет.во-вторых, вы также можете создать представление в XML, затем использовать Inflatrer, а затем добавить.Это дает намного более чистый код aswel.

Редактировать: Так что вам лень НАСТОЯЩЕМ попробовать попробовать разметку и послушать совет, вот код:

main.xml

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="0"
android:id="@+id/schedule_table_entry">
</TableLayout>

myrow.xml

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
    android:id="@+id/text"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center" />
</TableRow>

TestActivity

public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LayoutInflater inflater = getLayoutInflater();
    TableRow row = (TableRow) inflater.inflate(R.layout.myrow, null);
    TextView text = (TextView) row.findViewById(R.id.text);
    text.setText("I did all your work... smart even");

    TableLayout table = (TableLayout) findViewById(R.id.schedule_table_entry);
    table.addView(row);
}
...