我正在开发一个使用地理定位的应用程序,我希望在接近某个点时设置一个可见的布局,在距离该点太远时设置为GONE。
这是我的xml:
<LinearLayout
android:visibility="gone"
android:id="@+id/slidePane"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
然后我像往常一样在活动中使用ID: 在class属性中声明它:
private LinearLayout slidepane;
在onCreate()方法中设置它:
slidepane = (LinearLayout) findViewById(R.id.slidePane);
然后我尝试在onLocationChanged()
方法中更新它,如下所示:
if (InterestPoint.CalculationByDistance(location, new LatLng(47.247801, -1.551883)) < 0.03) {
Toast.makeText(MainActivity.mContext, "InterestPoint close", Toast.LENGTH_SHORT).show();
slidepane.setVisibility(View.VISIBLE);
} else {
slidepane.setVisibility(View.GONE);
}
所以条件是正确的,因为Toast
出现但布局不可见,为什么?
谢谢。
编辑:我正在使用https://github.com/umano/AndroidSlidingUpPanel并尝试设置第二个孩子(滑动面板)的可见性。我没有在文档中看到有关可见性的任何内容。我仍然可以访问LinearLayout的子项,但不能访问容器本身(特别是可见性)。
答案 0 :(得分:2)
替换它:
slidepane.setVisibility(View.VISIBLE);
用这个:
runOnUiThread(new Runnable() {
@Override
public void run() {
slidepane.setVisibility(View.VISIBLE);
}
});
答案 1 :(得分:0)
确保在初始化时设置视图的可见性。
@Override
protected void onCreate(Bundle savedInstanceState) {
........
slidepane = (LinearLayout) findViewById(R.id.slidePane);
slidepane.setVisibility(View.GONE);
.......
//onLocationChanged() add ->
if (InterestPoint.CalculationByDistance(location, new LatLng(47.247801, -1.551883)) < 0.03) {
Toast.makeText(MainActivity.mContext, "InterestPoint close", Toast.LENGTH_SHORT).show();
slidepane.setVisibility(View.VISIBLE);
} else {
slidepane.setVisibility(View.GONE);
}