点击 LinearLayout 的 onclicklistener 出现问题

5
为了将图标和文本组合在一起,我将它们放在一个线性布局中,并实现了该线性布局的监听器。
<LinearLayout
        android:id="@+id/ll0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:orientation="vertical" >
        <ImageButton
            android:id="@+id/imageButton0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            android:src="@drawable/start" />
        <TextView
            android:id="@+id/textView0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Start"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

我已经实现了监听器,实现方式如下:-
l0 = (LinearLayout)findViewById(R.id.ll0);
l0.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {
            //Some Code
        }
    });

我面临的问题是当我点击图标时,监听器似乎没有响应。当我点击文本视图和图标之间的空白部分时,监听器可以正常工作。我希望整个部分都可以被点击,而不仅限于某个特定点。

1个回答

6
我认为ImageButton是一个可点击的视图,它捕获了点击事件,从而阻止了LinearLayout接收点击事件。尝试在定义ImageButton的XML中添加android:clickable="false"
然而,更好的方法是使用复合绘制。请参见如何使用复合绘制代替包含ImageView和TextView的LinearLayout。基本上,您可以在定义TextView的XML中添加android:drawableTop="@drawable/start",完全放弃LinearLayoutImageButton。然后,您只需处理TextView上的单击即可。

1
android:clickable似乎没有起到作用,但复合绘图工具很好用。 - daemon54

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接