我希望每次用户触摸容器视图中的视图时,父视图都会重置超时。除了没有任何点击的seekBar View之外,它的效果很好。
更新
侦听器设置在父视图中,如下所示:
this.setAddStatesFromChildren(true);//has no effect
this.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "reset hide timer: ");
handler.removeCallbacks(hideCallback);
//playerControls is a compound view
playerControls.setVisibility(VISIBLE);
handler.postDelayed(hideCallback, 5000);
}
});
此代码捕获子视图中的所有事件,但无法从playerControls视图中的seekbar获取事件。该视图还有其他组件可以冒泡事件,而不是搜索栏。
父视图:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bar">
<android.support.v7.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/show"
/>
<..PlayerControls
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/player_controls"
android:layout_below="@id/show"
android:visibility="gone"
/>
</RelativeLayout>
和子视图(PlayerControls):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/player_controls"
>
<android.support.v7.widget.AppCompatTextView
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<android.support.v7.widget.AppCompatSeekBar
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/seek_bar"
/>
</RelativeLayout>