【问题标题】:Don't work first click on view不工作先点击查看
【发布时间】:2015-10-20 15:44:52
【问题描述】:

今天我在我的应用中发现了奇怪的行为。我有一个样式如下的视图(实际上是 TextView):

> <style name="EditTextStyle.Default"
> parent="Base.V12.Widget.AppCompat.EditText">
>     <item name="android:textSize">@dimen/TEXT_SMALL_SIZE</item>
>     <item name="android:padding">@dimen/edit_text_default_padding</item>
>     <item name="android:layout_margin">@dimen/edit_text_default_padding</item>
>     <item name="android:textColor">@color/text.total.color</item>
>     <item name="android:background">@null</item>
>     <item name="android:focusable">true</item>
>     <item name="android:clickable">true</item>
>     <item name="android:focusableInTouchMode">true</item> </style>

我需要处理 onClick() 操作,只有当您在 onCreate() 之后第一次单击此视图时才会出现问题,在其他情况下,一切都按预期工作。 android 跳过了第一次点击,另外选择器运行良好并且突出显示了视图,但是 onClick() 方法跳过了第一次点击。

我已经解决了这个问题,但没有实现这种风格,但也许有人可以解释我为什么或哪个设置破坏了我的应用程序?

【问题讨论】:

  • 您是否尝试过移除可聚焦、可点击和可聚焦的InTouchMode?如果这是一个文本视图,你不应该弄乱这些标志。

标签: android


【解决方案1】:

问题在于以下几行:

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

由于这些行,第一次单击将用于设置焦点,然后从第二次单击开始调用 onClick()。

更多信息在这里:Android button - How to set focusable to true and still accept onClick listener on first click?

【讨论】:

  • 它看起来像我需要的。谢谢。
  • (无法编辑之前的评论)不适用于 LinearLayout。
【解决方案2】:

如果您从样式中设置它,只需删除 &lt;item name="android:focusableInTouchMode"&gt;true&lt;/item&gt;

或者如果你从 xml 中设置它,只需删除 android:focusableInTouchMode="true"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多