这可能是布局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()方法。
看来这是有意为之的行为。如果要避免此行为,则需要覆盖ViewGroup
(RelativeLayout
)或使用非SeekBar
父级的View
来处理此事件。