猿问

自定义 Spinner 项目中的可点击按钮阻止点击项目本身

我有自定义ArrayAdapter和自定义项目布局Spinner。


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content"

    android:clickable="true"

    android:layout_height="wrap_content">


    <TextView

        android:id="@android:id/text1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:minHeight="48dp"

        android:layout_toStartOf="@id/delete"

        android:drawablePadding="8dp"

        android:gravity="center_vertical|start"

        android:paddingTop="8dp"

        android:paddingBottom="8dp"

        android:paddingStart="16dp"

        android:ellipsize="none"

        android:textAppearance="@style/TextAppearance.AppCompat.Menu" />


    <ImageButton

        android:id="@+id/delete"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:padding="16dp"

        android:layout_alignParentEnd="true"

        android:layout_centerInParent="true"

        android:contentDescription="@null"

        android:background="?attr/transparentRoundRipple"

        android:src="@drawable/ic_delete_grey600_24px" />

</RelativeLayout>

在这个布局中有一个按钮可以删除这个项目


@Override

public View getDropDownView(int position, View view, ViewGroup parent)

{

    if (view == null) {

        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        view = inflater.inflate(R.layout.spinner_user_agent_item, parent, false);

    }


    TextView textView = view.findViewById(android.R.id.text1);

    textView.setText(getItem(position));


    ImageButton deleteButton = view.findViewById(R.id.delete);

    deleteButton.setOnClickListener((View v) -> removeAgent(getItem(position)));


    return view;

}

但问题是这个按钮的监听器阻止了元素本身的点击,我无法从列表中选择它。是否可以更改行为并使其可以单击按钮(用于删除)和元素本身(用于选择)?


萧十郎
浏览 282回答 2
2回答

慕森卡

解决方案很简单:使用ImageView而不是ImageButton.

Smart猫小萌

尝试添加到你android:clickable="true"的RelativeLayout也android:focusable="true"和android:focusableInTouchMode="true"
随时随地看视频慕课网APP

相关分类

Java
我要回答