0

我在微调器项目选择上将按钮的可见性设置为 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 小部件。

4

2 回答 2

7

我有同样的问题。holoeverywhere 中的微调器类在调用 onItemSelected 后更新其图形。所以它“覆盖”了你的布局更新。我找到的唯一解决方案是设置一个处理程序来更新 ui,在未来 1 秒执行。像这样:

Handler han = new Handler();
        han.postAtTime(new Runnable() {
            @Override
            public void run() {
                // UPDATE UI HERE
            }
        }, 1000);
于 2012-12-06T16:43:15.120 回答
0

最简单的解决方案 anno 2022 是使用以下方法:

runOnUiThread(() -> mBoatSelectMenu.setVisibility(View.VISIBLE));

其中 mBoatSelectMenu 引用的 XML id 是所选元素的。

于 2022-01-18T12:13:25.970 回答