当不触摸时,Android SeekBar的状态变为按下状态

L. *_*ter 4 android android-view android-seekbar

这是可能的布局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>
Run Code Online (Sandbox Code Playgroud)

我将设置OnClickListenerRelativeLayout。奇怪的是,当我触摸时RelativeLayoutSeekBar就像按动它一样,当按下状态时,它的拇指成为可绘制对象。我认为状态变得紧迫。

这是一个错误,如何解决?

Vad*_*dim 5

刚设定

 android:clickable="true"
 android:focusable="true"
Run Code Online (Sandbox Code Playgroud)

到您的搜索栏


Dav*_*e S 3

ViewGroups当它们可点击时,似乎将它们的状态传递给它们的孩子,如这个问题所示:View从其父级获取其可绘制状态(按下等...)

发生这种情况可能是因为您OnClickListenerRelativeLayout.

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

您也可以覆盖您的RelativeLayout, 并且不执行任何操作setPressed

Android:即使指定了duplicateParentState,子元素也与其父元素共享按下状态

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

处理 ViewGroup 中的触摸事件需要特别小心,因为 ViewGroup 的子级通常是与 ViewGroup 本身不同的触摸事件的目标。为了确保每个视图正确接收为其指定的触摸事件,请重写 onInterceptTouchEvent() 方法。

所以这似乎是有意的行为。如果您想避免这种行为,您似乎需要覆盖ViewGroup( RelativeLayout) 或使用View不是SeekBar此事件的父级的 。