Мой XML-файл экрана Activity_main создается с использованием RelativeView с ScrollView, который содержит TableLayout / TableRows, которые инкапсулируют четыре TextView. Я центрировал каждую из TableRows, используя android: gravity = "center | center_vertical". Когда я запускаю приложение, на экране отображается текст в каждой строке, центрированный по вертикали. Когда я обновляю экран, текст смещается вверх до верхней части экрана.
Я просмотрел stackoverflow и другие сайты и нашел разные частичные решения - ни одно из них не относится ко мне Как правило, потому что я не могу перейти от RelativeView к LinearView.
Что странно в этой ситуации, так это то, что она возникла из-за того, что мне приходилось включать строку android: layout_width = "0dp" в каждом TextView, чтобы android: layout_weight работал правильно (это было предложенное мной решение). Когда я исключаю строку android: layout_width = "0dp", текст в каждой строке выравнивается правильно.
Так в чем же проблема с включением android: layout_width = "0dp" в мой XML-файл, который вызывает смещение текста вверх при обновлении?
Я попытался заменить RelativeLayout на LinearLayout. Это не будет работать для моего приложения.
Я попытался удалить Android: layout_width = "0dp". Мне это нужно для того, чтобы заставить работу макета работать.
Я включил и исключил Android: gravity = "center_vertical" без эффекта.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
...
<ScrollView
android:id="@+id/calcTableLayout"
android:visibility="visible"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_below="@+id/calcHeaderLayout"
android:layout_above="@+id/bottomMenuLayout"
android:fadingEdge="none">
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="0dp" >
<TableRow
android:id="@+id/tableRow_D"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="40" >
<TextView
android:id="@+id/text_D_label"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="19"
android:background="@color/defaultTableBackground1"
android:gravity="start|center_vertical"
android:minHeight="@dimen/tblMinRowSize"
android:paddingStart="12dp"
android:paddingEnd="0dp"
android:text="@string/loads_D"
android:textColor="@color/defaultTableText1"
android:textSize="@dimen/tblFontSize"
android:visibility="visible" />
<TextView
android:id="@+id/text_D_ULoad"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="8"
android:background="@color/defaultTableBackground1"
android:gravity="end|center_vertical"
android:minHeight="@dimen/tblMinRowSize"
android:paddingStart="0dp"
android:paddingEnd="10dp"
android:text="@string/zero_value"
android:textColor="@color/defaultTableText1"
android:textSize="@dimen/tblFontSize"
android:visibility="visible" />
<TextView
android:id="@+id/text_D_Factor"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:background="@color/defaultTableBackground1"
android:gravity="center_horizontal|center_vertical"
android:minHeight="@dimen/tblMinRowSize"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:text="@string/zero_value_3_digit"
android:textColor="@color/defaultTableText1"
android:textSize="@dimen/tblFontSize"
android:visibility="visible" />
<TextView
android:id="@+id/text_D_FLoad"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="8"
android:background="@color/defaultTableBackground1"
android:gravity="end|center_vertical"
android:minHeight="@dimen/tblMinRowSize"
android:paddingStart="0dp"
android:paddingEnd="12dp"
android:text="@string/zero_value"
android:textColor="@color/defaultTableText1"
android:textSize="@dimen/tblFontSize"
android:visibility="visible" />
</TableRow>
</TableLayout>
</ScrollView>
</RelativeLayout>
...
Текст в каждом из TextViews в TableRows выравнивается по вертикальному центру при запуске приложения. Но затем при обновлении все четыре TextViews (или, по крайней мере, текст в TextViews) перемещаются в верхнюю часть TextView.