在我的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>
答案 0 :(得分:1)
由于我无法重现您的错误,我建议您尝试不同的布局(使用相同的假定结果显示方面),例如:
<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
)的可见性的任何地方,您也应该为另一个布局设置。