我的activity_main屏幕xml文件是使用RelativeView和ScrollView进行布局的,该ScrollView包含封装了四个TextViews的TableLayout / TableRows。我已使用android:gravity =“ center | center_vertical”将每个TableRows居中。当我运行该应用程序时,屏幕上的每一行文本都正确地垂直居中。当我刷新屏幕时,文本会向上移动到视图顶部。
我到处都是stackoverflow和其他站点,发现了不同的局部解决方案-它们都不适用于我。通常是因为我无法从RelativeView转到LinearView。
这种情况的奇怪之处在于它的产生是因为我必须在每个TextView中包含android:layout_width =“ 0dp”行,以便android:layout_weight可以正常工作(这是我发现的建议解决方案)。当我排除android:layout_width =“ 0dp”行时,每一行中的文本均正确对齐。
那么在我的xml文件中包含android:layout_width =“ 0dp”会导致文本在刷新后向上移动是什么问题?
我尝试用LinearLayout替换RelativeLayout。它不适用于我的应用程序。 我试图删除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>
...
启动应用程序时,TableRows中每个TextViews中的文本都与垂直中心对齐。但是随后在刷新时,所有四个TextView(或至少TextView中的文本)都移到TextView的顶部。