4

我遇到了以下问题:在 a中,ScrollView我有TableLayout很多EditTexts,Spinners等等RadioGroups。当活动开始时,第一个 EditText 获得焦点。如果我向下滚动到 aSpinner并选择一个项目,它会自动滚动回EditText具有焦点的那个。

我已经尝试使用以下内容:

((Spinner) findViewById(R.id.attributes_status)).setFocusable(true);
((Spinner) findViewById(R.id.attributes_status)).setFocusableInTouchMode(true);

R.id.attributes_status是微调器。这解决了自动滚动问题,但现在我必须点击微调器两次(1. 设置焦点,2. 显示项目列表)!

有人知道如何将焦点正确设置为 aSpinner吗?或者如何在不改变Spinner行为的情况下抑制自动滚动问题?

在此先感谢并致以最诚挚的问候,

塞巴斯蒂安

4

2 回答 2

1

我遇到了同样的问题。我通过使用 使微调器可聚焦来解决它setFocusableInTouchMode(true),但这会导致其他问题。你可以在这里看到我对他们的解决方案。

于 2013-12-29T02:19:20.767 回答
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();
        }

    });
于 2017-03-17T06:17:23.477 回答