我在微调器选项上将按钮的可见性设置为VISIBLE或GONE: -
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) {}
});
这里的问题是我的视图在此操作后没有刷新,但是当我在页面上选择一个EditText并且键盘已启动时...此时它会刷新并显示所需的行为。
我尝试将switch-case编辑为: -
switch (newUserType) {
case AnyUser:
case CurrentUser:{
selectUserBtn.setVisibility(View.GONE);
mainScrollView.invalidate();
break;
}
case SpecificUser:{
selectUserBtn.setVisibility(View.VISIBLE);
mainScrollView.invalidate();
break;
}
default:
break;
}
}
但这也不起作用
仅供参考,我在我的项目中使用HoloEverywhere
主题,而这个微调器来自HoloEverywhere小部件。
答案 0 :(得分:4)
我遇到了同样的问题。来自holoeverywhere的微调器类在调用onItemSelected之后更新其图形。因此它“覆盖”了您的布局更新。我发现的唯一解决方案是设置一个处理程序来更新ui,将来会被判1秒钟。 像这样:
Handler han = new Handler();
han.postAtTime(new Runnable() {
@Override
public void run() {
// UPDATE UI HERE
}
}, 1000);