Как я могу центрировать текстовые представления в строке таблицы, которая постоянно создается динамически? - PullRequest
0 голосов
/ 04 августа 2020

У меня есть список зон. И моя функция создает строку таблицы для каждой зоны и добавляет текстовое представление имени зоны в эту строку, а затем добавляет эту строку в мой TableLayout. Поскольку список зон заполняется из базы данных, список может изменяться в течение срока службы приложения. Что я пытаюсь сделать, так это центрировать каждое текстовое представление в каждой строке по горизонтали. Я проверяю каждый источник, и люди продолжают говорить: «Добавьте этот фрагмент кода в свой XML файл ...». Поскольку я создаю эти строки и текстовые представления динамически, у меня нет никаких объектов, которыми можно было бы манипулировать в моем XML файле. Поэтому мне нужно как-то управлять этим, кодируя на стороне Java. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Попробуйте следующее:

В папке макета, (layout_row. xml)

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">
        <TextView
            android:id="@+id/nameTxt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:gravity="center" />
        <include layout="@layout/line_horizontal_gray" />
    </LinearLayout>

</TableRow>

И для добавления строки в макет таблицы:

private void addRow(final Zone zone){
        LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        TableRow rowView = (TableRow)inflater.inflate(R.layout.layout_row, null);

        TextView textView = rowView.findViewById(R.id.nameTxt);
        textView.setText(zone.getName());
        textView.setTextColor(Color.BLACK);
        textView.setTextSize(25);

        layout.addView(rowView);
    }

Seperator добавляется в layout_row. Надеюсь, это поможет.

line_horizontal_gray. xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/darker_gray">

</LinearLayout>
0 голосов
/ 04 августа 2020

Можете попробовать

textView.setGravity(Gravity.CENTER_HORIZONTAL);
...