安卓搜索栏的状态在不触摸它时被按下



这可能是布局xml:

<RelativeLayout
    android:id="@+id/seek_bar_wrapper"
    android:layout_width="match_parent"
    android:layout_height="200dip">
    <SeekBar
        android:id="@+id/seek_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_margin="20dip"
        android:maxHeight="2dip"
        android:minHeight="2dip"
        android:progressDrawable="@drawable/drawable_seekbar_progress"
        android:thumb="@drawable/drawable_seekbar_thumb" />
</RelativeLayout>

我将OnClickListener设置为RelativeLayout。奇怪的是,当我触摸RelativeLayout时,SeekBar的表现就像我按下它一样,当它的状态被按下时,它的拇指变成了可绘制的。我认为它的状态变得紧张。

这是一个bug吗?如何处理它?

只需设置

 android:clickable="true"
 android:focusable="true"

到您的搜索栏

ViewGroups在可点击时似乎会将其状态传递给其子级,如本问题所示:View从其父获取其可绘制状态(按下等…)

这可能是因为您将OnClickListener设置为RelativeLayout

我的第一个倾向是将Button放在SeekBar后面,作为SeekBar的兄弟,并将其用于OnClick操作。

您也可以覆盖您的RelativeLayout,而不在setPressed 上执行任何操作

安卓系统:即使重复ParentState指定的,子元素也会与父元素共享按下状态

根据文件:http://developer.android.com/training/gestures/viewgroup.html

在ViewGroup中处理触摸事件需要特别小心,因为ViewGroup具有作为不同目标的子级的常见情况触摸事件而不是ViewGroup本身。确保每个视图正确接收预定的触摸事件,覆盖onInterceptTouchEvent()方法。

看来这是有意为之的行为。如果要避免此行为,则需要覆盖ViewGroupRelativeLayout)或使用非SeekBar父级的View来处理此事件。

最新更新