我遇到了以下问题:
在ScrollView
内,我有一个TableLayout
,其中包含大量EditTexts
,Spinners
,RadioGroups
等等。当活动开始时,第一个EditText获得焦点。如果我向下滚动到Spinner
并选择一个项目,它会自动滚动回到具有焦点的EditText
。
我已经尝试过使用以下内容:
((Spinner) findViewById(R.id.attributes_status)).setFocusable(true);
((Spinner) findViewById(R.id.attributes_status)).setFocusableInTouchMode(true);
R.id.attributes_status
是锭床工人。这解决了自动滚动问题,但现在我必须点击微调器两次(1.设置焦点,2。显示项目列表)!
有人知道如何将焦点正确设置为Spinner
吗?或者如何在不改变Spinner
行为的情况下抑制自动滚动问题?
提前致谢并致以最诚挚的问候,
塞巴斯蒂安
答案 0 :(得分:0)
我遇到了同样的问题。我通过使用setFocusableInTouchMode(true)
使微调器可聚焦来解决它,但这会导致其他问题。您可以看到我的解决方案here。
答案 1 :(得分:0)
因为这解决了你的问题,但我最容易解决这个问题,解决了我的问题。 首先要隐藏键盘,你可以使用它:
this.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
然后使用此代码:
spinner.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus)
YourActivity.this.spinner.performClick();
}
});