我想创建一个线性布局,其行为与ImageButton类似.
<LinearLayout
android:id="@+id/container"
style="?WidgetHomeIconContainer">
<ImageView
android:id="@+id/icon"
style="?WidgetHomeIcon" />
<TextView
android:id="@+id/title"
style="?WidgetHomeLabel"
android:text="@string/title"
android:textAppearance="?attr/TextHomeLabel" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在ImageView,TextView和LinearLayout的样式中,我为所有状态设置了一个选择器.
现在:
所以我想做以下几点.当我点击父LinearLayout时,我需要将它的所有子项更改为按下状态.
我尝试将以下代码添加到LinearLayout onClickListener以传播点击:
@Override
public void onClick(View v)
{
LinearLayout l = (LinearLayout) v;
for(int i = 0; i < l.getChildCount(); i++)
{
l.getChildAt(i).setClickable(true);
l.getChildAt(i).performClick();
}
}
Run Code Online (Sandbox Code Playgroud)
但它仍然保持相同的状态.非常感谢您的帮助.
我有以下问题.我有一个GridView内部LinearLayout如下图所示.我想在用户点击GridView图像中的空白区域时检测点击事件,我想要的位置是红色区域,也是绿色区域内.
但我有以下问题.
onClickListener为GridView:错误,因为适配器不能添加Click事件.onItemClickListener了GridView:我只是可以检测存在的项目(在图像中的白框)onClickListener,LinearLayout我只能检测绿色区域上的点击事件,而不是红色区域.那么我该如何解决上述问题呢.
@Edit:我的布局看起来像:
<LinearLayout>
<GridView
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
谢谢 :)

我有线性布局,其中只包含WebView.我想要做的是禁用Webview中的单击,这意味着我希望调用与RelativeLayout bg_stepsContainer关联的事件.我用过android:clickable ="false"这是代码
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="30dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:id="@+id/bg_stepsContainer"
>
<LinearLayout
android:id="@+id/stepslcontainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" >
<WebView
android:id="@+id/bg_stepsToReproduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="@color/solid_black" />
</LinearLayout>
<ImageView
android:id="@+id/stepsArrow"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_alignParentRight="true"
android:clickable="false"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:src="@drawable/ic_right_arrow" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
任何建议都得到赞赏!
我有一个在那里播放视频的布局,我想处理这个播放器上的 onClick 。在我的线性布局中,我有 api 中建议的 YouTube 片段:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/youtubePlayerFragment"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
然后我在我的活动中访问这个片段:
mYouTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtubePlayerFragment);
Run Code Online (Sandbox Code Playgroud)
我初始化它:
mYouTubePlayerFragment.initialize(CategoriesTabsData.DEVELOPER_KEY, new com.google.android.youtube.player.YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(com.google.android.youtube.player.YouTubePlayer.Provider provider, com.google.android.youtube.player.YouTubePlayer youTubePlayer, boolean b) {
// loading the video
}
@Override
public void onInitializationFailure(com.google.android.youtube.player.YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
});
Run Code Online (Sandbox Code Playgroud)
我想在点击玩家时将“click”打印到 Log.d 。因此,当播放视频并且点击/触摸其播放器时,我想将“点击”打印到日志中
我正在尝试处理播放器上的点击(我在 onInitializationSuccess 中获取了 youtubeplayer 对象),但没有成功。
我试过这个:
mYouTubePlayerFragment.getView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("youtube", "click");
}
});
Run Code Online (Sandbox Code Playgroud)
但它没有到达 onClick。然后,我尝试创建扩展 YouTubePlayerFragment 并实现 …
我有一个带有ImageView和TextView的自定义视图,并为我的自定义视图实现了onClickListener.问题是,ImageView正在使用onClick事件(我只希望用户能够点击我的控件,无论在哪里).我也可以听一下Image/TextView的onClick,但它对我来说似乎很脏.
有没有办法在Android中冒泡/路由事件?还是可能的另一个好方法?
我有一个包含五个TextView的布局.当用户单击五个TextView中的任何一个时,它将执行相同的操作:打开另一个活动.因此,五个TextView的OnClickerListener行为是相同的.是否有可能,我只OnClickListerner添加到一个视图,如布局,所以我不必OnClickListerner添加到每个五个TextView的吗?换句话说,如果没有子组件收到CLICK事件,那么CLICK事件是否会传递给他们的父组件,即布局?
谢谢.