Android SeekBar 的状态在不触摸时变为按下状态
Android SeekBar's state become pressed when not touch it
这是可能的布局 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
的表现就像我按下它一样,当它的状态被按下时,它的拇指变成了 drawable。我认为它的状态变得紧迫。
这是一个错误吗?如何处理?
ViewGroups
似乎将它们的状态传递给它们的 children 当它们可点击时如这个问题所示:View gets its drawable state (pressed, etc...) from its parent
这可能是因为您将 OnClickListener
设置为 RelativeLayout
。
我的第一个想法是将 Button
作为 SeekBar
的同级放在 SeekBar
后面,并将其用于您的 OnClick 操作。
您也可以覆盖您的 RelativeLayout
,并且在 setPressed
上不执行任何操作
Android: Child elements sharing pressed state with their parent even when duplicateParentState specified
根据文档:http://developer.android.com/training/gestures/viewgroup.html
Handling touch events in a ViewGroup takes special care, because it's
common for a ViewGroup to have children that are targets for different
touch events than the ViewGroup itself. To make sure that each view
correctly receives the touch events intended for it, override the
onInterceptTouchEvent() method.
看来这是有意为之的行为。如果你想避免这种行为,看起来你需要覆盖 ViewGroup
(RelativeLayout
) 或使用 View
而不是 parent 到 SeekBar
对于此事件。
刚设置
android:clickable="true"
android:focusable="true"
到你的搜索栏
这是可能的布局 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
的表现就像我按下它一样,当它的状态被按下时,它的拇指变成了 drawable。我认为它的状态变得紧迫。
这是一个错误吗?如何处理?
ViewGroups
似乎将它们的状态传递给它们的 children 当它们可点击时如这个问题所示:View gets its drawable state (pressed, etc...) from its parent
这可能是因为您将 OnClickListener
设置为 RelativeLayout
。
我的第一个想法是将 Button
作为 SeekBar
的同级放在 SeekBar
后面,并将其用于您的 OnClick 操作。
您也可以覆盖您的 RelativeLayout
,并且在 setPressed
Android: Child elements sharing pressed state with their parent even when duplicateParentState specified
根据文档:http://developer.android.com/training/gestures/viewgroup.html
Handling touch events in a ViewGroup takes special care, because it's common for a ViewGroup to have children that are targets for different touch events than the ViewGroup itself. To make sure that each view correctly receives the touch events intended for it, override the onInterceptTouchEvent() method.
看来这是有意为之的行为。如果你想避免这种行为,看起来你需要覆盖 ViewGroup
(RelativeLayout
) 或使用 View
而不是 parent 到 SeekBar
对于此事件。
刚设置
android:clickable="true"
android:focusable="true"
到你的搜索栏