Android按钮需要两次单击才能执行操作

new*_*ore 19 android focus click button android-edittext

我有一张表格.7垂直布局中的EditText.在一瞬间屏幕上只能看到3个EditText(形式很大所以我需要向上和向下滚动以填充所有文件).在底部 - 按钮.

当我填充顶部EditText(或顶部之一,当我向下滚动到按钮时看不见),并在此EditText中聚焦(光标),当我向下滚动并尝试单击按钮一次时 - 没有任何反应.当我再次点击时 - 发生按钮动作.

当具有焦点和按钮的EditText都可见时 - 按钮需要单击一下.

我认为在第一种情况下,第一次点击只需要关注.第二次点击是"真实"点击.

我怎么解决它?我只需要点击一下Button.谢谢

mav*_*ves 26

问题是陈旧的,我不知道这是否会解决你的问题,因为你的pastebin链接不再起作用了,但是因为我偶然发现你的帖子有同样的问题而我找到了解决方案我会发布它:

在我的情况下,当我在教程后面的按钮上应用自定义样式时出现问题:

<style name="ButtonStyle" parent="@android:style/Widget.Holo.Button">
    <item name="android:focusable">true</item>
    <item name="android:focusableInTouchMode">true</item>
    <item name="android:clickable">true</item>
    <item name="android:background">@drawable/custom_button</item>
    <item name="android:textColor">@color/somecolor</item>
    <item name="android:gravity">center</item>
</style>
Run Code Online (Sandbox Code Playgroud)

问题是以下几行:

<item name="android:focusableInTouchMode">true</item>
Run Code Online (Sandbox Code Playgroud)

删除后,按钮按预期工作.

希望这可以帮助.


小智 12

我使用以下方法来解决类似的问题.如果第一次点击仅获得焦点,它会再次自动点击该项目:

input.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    v.performClick();
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

我需要focusableInTouchMode才是真的.

  • 这可能会出现问题,因为如果按钮在未被单击的情况下获得焦点,则会执行单击按钮的操作。例如,键盘连接到 Android 设备,并且 Tab 键用于切换焦点。 (2认同)