我的第一个LinearLayout onclick工作,而其他人没有。为什么?

时间:2014-03-12 12:56:15

标签: android xml-layout

我正在开发一个大UI来显示用户表单的详细信息。如果用户点击包含电话号码LinearLayout的{​​{1}},我希望如此。我想拨打电话TextView。我已将intent属性添加到所有onClick()个。但只有第一个有效,而其他人没有任何解释,我们将不胜感激。

LinearLayout
ID为 ll1

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="10dp" > <ImageButton android:id="@+id/imageButtonMSG1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#f8f3c2" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/msg" /> <LinearLayout android:layout_width="wrap_content" android:id="@+id/ll1" android:layout_height="match_parent" android:clickable="true" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/imageButtonMSGMobile" android:orientation="vertical" > <TextView android:id="@+id/textViewMobile1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="Small Text" android:textColor="#790202" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/textViewCperson1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="20dp" android:text="Cperson1" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#E14343" /> </LinearLayout> <TextView android:id="@+id/textView201" android:layout_width="0.1dp" android:layout_height="40dp" android:background="#8E6364" android:layout_alignParentRight="true" android:layout_marginRight="60dp" android:textAppearance="?android:attr/textAppearanceSmall" /> </RelativeLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="2dp" > <TextView android:id="@+id/textView51" android:layout_width="fill_parent" android:layout_height="0.2dp" android:background="#8E6364" android:layout_marginTop="5dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:textAppearance="?android:attr/textAppearanceSmall" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="10dp" > <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/ll2" android:layout_alignParentLeft="true" android:clickable="true" android:layout_toLeftOf="@+id/imageButtonMSGHome" android:orientation="vertical" > <TextView android:id="@+id/textViewMobile2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="Small Text" android:duplicateParentState="true" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#790202" /> <TextView android:id="@+id/textViewCperson2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="20dp" android:text="Cperson2" android:duplicateParentState="true" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#E14343" /> </LinearLayout> <TextView android:id="@+id/textView202" android:layout_width="0.2dp" android:layout_height="40dp" android:background="#8E6364" android:layout_alignParentRight="true" android:layout_marginRight="60dp" android:textAppearance="?android:attr/textAppearanceSmall" /> <ImageButton android:id="@+id/imageButtonMSG2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#f8f3c2" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/msg" /> </RelativeLayout> 适用于LinearLayout事件,而 ll2 和其他人无效。我不知道为什么会这样。

2 个答案:

答案 0 :(得分:1)

在XML中简单地声明onClick属性可能更容易 - 这样可以避免为每个视图调用setOnClickListener。这可以这样做:

<LinearLayout
    ...
    android:onClick="doSomething" >

然后,在您的Java代码中,您将需要一个名为doSomething的公共方法,该方法接受类型为View的参数:

public void doSomething(View view) {
// React to click here
}

注意,如果您不想要/不需要,则无需对view参数执行任何操作。

答案 1 :(得分:0)

确保为每个布局执行以下操作:

LinearLayout ll1 = (LinearLayout )findViewById(R.id.ll1);
ll1.setOnClickListener(new OnClickListener() {      
    @Override
    public void onClick(View v) {
        //Do stuff here     
    }
   });