Android setVisibility()未刷新活动布局
我在微调器项目选择中将按钮的可见性设置为可见或消失:-Android setVisibility()未刷新活动布局,android,visibility,android-theme,android-holo-everywhere,Android,Visibility,Android Theme,Android Holo Everywhere,我在微调器项目选择中将按钮的可见性设置为可见或消失:- selectUserTypeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
selectUserTypeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
FilterUserType newUserType = FilterUserType.get(position);
if(filter.userType != newUserType){
filter.userType = newUserType;
ScrollView mainScrollView = (ScrollView) findViewById(R.id.mainLayout);
switch (newUserType) {
case AnyUser:
case CurrentUser:{
selectUserBtn.setVisibility(View.GONE);
break;
}
case SpecificUser:{
selectUserBtn.setVisibility(View.VISIBLE);
break;
}
default:
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
但这也不起作用
仅供参考,我在项目中使用了HoloEverywhere主题,这个微调器来自HoloEverywhere小部件。我也遇到了同样的问题。holoeverywhere中的微调器类在调用onItemSelected后更新其图形。所以它“覆盖”了布局更新。我找到的唯一解决方案是设置一个处理程序来更新ui,在未来1秒内执行。 像这样:
Handler han = new Handler();
han.postAtTime(new Runnable() {
@Override
public void run() {
// UPDATE UI HERE
}
}, 1000);
我也有同样的问题。holoeverywhere中的微调器类在调用onItemSelected后更新其图形。所以它“覆盖”了布局更新。我找到的唯一解决方案是设置一个处理程序来更新ui,在未来1秒内执行。 像这样:
Handler han = new Handler();
han.postAtTime(new Runnable() {
@Override
public void run() {
// UPDATE UI HERE
}
}, 1000);
@auselen我已尝试使其父视图无效,但似乎不起作用,请您提供一些代码,以便我能清楚地找出我的错误。@e7fendy selectUserBtn是在特定用户选择类型的情况下为用户选择显示的按钮,因此,在任何其他情况下,它都没有在屏幕上可见的目的。事实上,我已经尝试过调试,并且在微调器操作中可见性值正在更改,但在我选择EditText并打开键盘之前,它们不会可见。在要重绘的视图的根目录上调用invalidate。我在Android 2.3和4.2的AVDs上尝试了您的代码,并且你想怎么做就怎么做。您使用哪种设备或AVD进行测试?@auselen我已尝试使其父视图无效,但似乎不起作用,请您提供一些代码,以便我能清楚地找出错误。@e7fendy selectUserBtn是在特定用户选择类型的情况下为用户选择显示的按钮,因此,在任何其他情况下,它都没有在屏幕上可见的目的。事实上,我已经尝试过调试,并且在微调器操作中可见性值正在更改,但在我选择EditText并打开键盘之前,它们不会可见。在要重绘的视图的根目录上调用invalidate。我在Android 2.3和4.2的AVDs上尝试了您的代码,并且你想怎么做就怎么做。您使用哪种设备或AVD进行测试?