在我的 main.xml 中,我有一个包含 2 列和 2 行的表;一个用于纬度和经度及其相关值。我希望它们在各自的列中居中,从我的阅读来看,最好的方法似乎是使用 layout_weight="1"和 gravity="center"。这在大多数时间确实有效,但由于我在代码的其他地方进行了更改,现在 gps_layout 中的所有项目都不是居中的除非配置已更改,在此当我通过旋转手机改变方向时的情况。
我知道旋转会导致应用程序经历其生命周期(除了重生之外,还有其他简写方式来谈论它吗?)但我不明白第一次运行后应用程序有什么不同,除了它保存状态......这似乎对居中没有太大影响。谢谢!抱歉,如果我没有正确格式化这个问题,我已经拖钓了一段时间,但这是我的第一个问题。
<TableLayout
android:id="@+id/gps_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
>
<TableRow>
<TextView
android:layout_column="1"
android:id="@+id/lat_text"
android:text="latitude: "
android:layout_weight="1"
android:gravity="center"
/>
<TextView
android:id="@+id/lon_text"
android:text="longitude: "
android:layout_weight="1"
android:gravity="center"
/>
</TableRow>
<TableRow>
...etc...
</TableRow>
</TableLayout>
最佳答案
由于我无法重现您的错误,我建议您尝试不同的布局(具有相同的结果显示方面),例如:
<LinearLayout android:id="@+id/gps_layout" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_alignBottom="@id/acquire"
android:visibility="invisible">
<LinearLayout android:orientation="vertical" android:layout_weight="1"
android:layout_height="wrap_content">
<TextView android:id="@+id/lat_text"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="latitude: "
android:gravity="center" />
<TextView android:id="@+id/lat_data"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="(lat goes here)"
android:gravity="center" />
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_weight="1"
android:layout_height="wrap_content">
<TextView android:id="@+id/lon_text"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="longitude: " android:gravity="center" />
<TextView android:id="@+id/lon_data"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="(lon goes here)"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
希望它能解决您的 cy 7.0.1 上的问题。
更新
关于您的代码的一些建议:
在MyLocationListener
中你不应该每次都设置两个布局的可见性,这样会更有效:
@Override
public void onLocationChanged(Location loc)
{
if (acquire_view.getVisibility() == View.VISIBLE)
{
acquire_view.setVisibility(View.INVISIBLE);
gps_view.setVisibility(View.VISIBLE);
}
}
此外,在onProviderEnabled
方法中,以及任何设置一个布局可见性的地方(acquire_view
/gps_view
),您还应该设置对于另一个也是如此。
关于android - TableLayout 中的 TextView 仅在配置更改后居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863336/