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;
}
});