如何使您的父母可点击但孩子无法点击?

时间:2019-07-03 10:53:03

标签: android android-layout android-spinner

我有LinearLayout,其中有2个孩子,仅用作预览。这里的LinearLayout功能与Button相同。我想禁用与其子级之间的任何交互,但可以使用LinearLayout使onClickListener可点击。当前,如果我单击Spinner,将不会触发onClickListener中的LinearLayout。我还用代码称呼spinner.isEnabled = false

布局:

<LinearLayout
    android:id="@+id/clickableLayout"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:gravity="center_vertical">

    <Spinner
        android:id="@+id/picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:duplicateParentState="true"
        android:enabled="false"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false">
    </Spinner>

    <TextView
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="16dp"
        android:textColor="@color/colorBlack"
        android:textSize="14dp"
        android:enabled="false"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:singleLine="true"
        android:duplicateParentState="true"
        android:maxLength="9"/>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

为所有视图启用Click Listener,然后调用您的函数,因此在哪个视图上单击都没有关系。它将始终触发该功能。

LinearLayout linearLayout;
TextView textView;
Spinner spinner;

linearLayout = findViewById(R.id.clickableLayout);
    spinner = findViewById(R.id.picker);
    textView = findViewById(R.id.text1);

    linearLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myFunction();
        }
    });

    spinner.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myFunction();
        }
    });
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myFunction();
        }
    });
}

private void myFunction() {
    Toast.makeText(getApplicationContext(),"Clicked",Toast.LENGTH_LONG).show();
}