Android Button требуется два щелчка для действия

У меня есть форма. 7 EditText в вертикальной компоновке. На экране в один момент можно увидеть только 3 EditText (форма большая, поэтому мне нужно прокручивать вверх и вниз, чтобы заполнить все файлы). В нижней части кнопки.

Когда я заполняю верхний EditText (или один из вершин, который невидим, когда я прокручиваю вниз до кнопки), и фокус (курсор) в этом EditText, когда я прокручиваю вниз и пытаюсь нажать кнопку один раз - ничего не происходит. когда я нажимаю снова - происходит действие кнопки.

Когда видны как EditText с фокусом, так и кнопка - Button требуется один клик.

Я думаю, что в первом случае первый клик просто берет фокус. И второй клик - это "реальный" клик.

Как я могу это исправить? Мне нужно только один щелчок на кнопке. Благодаря

Ответы

Ответ 1

Вопрос старый, и я не знаю, решит ли это вашу проблему, так как ваша ссылка 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>

Проблема заключалась в следующей строке:

<item name="android:focusableInTouchMode">true</item>

Как только я удалил его, кнопка работала как ожидалось.

Надеюсь, что это поможет.

Ответ 2

Я использовал следующее, чтобы решить подобную проблему. Он автоматически нажимает на элемент снова, если первый клик только фокусируется:

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

Мне нужно, чтобы focusableInTouchMode был правдой.

Ответ 3

Аналогично ответам Maves. Это сделало трюк для меня:

<Button 
    style="@android:style/Widget.EditText"
    android:focusableInTouchMode="false"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

Ответ 4

Старый вопрос, который я знаю. В любом случае у меня была такая же проблема, и мне нужна кнопка для фокусировки.
В конце я использовал OnTouchListener.

myButton.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        int action = motionEvent.getAction();
        if (action == MotionEvent.ACTION_DOWN) {
            // do your stuff on down here
        } else if (action == MotionEvent.ACTION_UP) {
            // do your stuff on up here
        }

        // if you return true then the event is not bubbled e.g. if you don't want the control to get focus or other handlers..

        return false;                 
    }
});