-2

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

<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>

LinearLayoutid ll1适用于onClick()Event,而ll2和其他人则不起作用。我不知道为什么会这样。

4

2 回答 2

1

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

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

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

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

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

于 2014-03-12T13:15:10.523 回答
0

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

LinearLayout ll1 = (LinearLayout )findViewById(R.id.ll1);
ll1.setOnClickListener(new OnClickListener() {      
    @Override
    public void onClick(View v) {
        //Do stuff here     
    }
   });
于 2014-03-12T13:00:54.680 回答