gpt4 book ai didi

java - 如何处理具有由嵌套布局组成的组 View 的 ExpandableListView 的触摸

转载 作者:行者123 更新时间:2023-12-01 11:16:23 25 4
gpt4 key购买 nike

我正在尝试创建一个可扩展列表,其中包含由多个图像、 TextView 和按钮组成的组项目。

图像和 TextView ,我都放在一个RelativeLayout中,并且触摸事件都工作,所以一切都很好。然后我决定在水平 LinearLayout 中添加一个由 3 个按钮组成的按钮栏,基本上创建一个嵌套布局。但现在,组项目不再响应触摸事件。

我确信这与 ListView 在适配器中膨胀的方式有关,但我不知道如何正确执行此操作。

如果有人能帮助我,我会很高兴!

这是组元素 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="3dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="20dp">


<ImageView
android:id="@+id/item1"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#828080"
android:focusable="false" />

<TextView
android:id="@+id/item2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/item1"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:text=""
android:textSize="20dp" />

<TextView
android:id="@+id/item3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item2"
android:paddingBottom="5dp"
android:text="" />

<TextView
android:id="@+id/item4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/item5"
android:layout_alignTop="@+id/item5"
android:layout_toEndOf="@id/item5"
android:layout_toRightOf="@id/item5"
android:paddingBottom="5dp"
android:text="" />

<TextView
android:id="@+id/item5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/item3"
android:layout_alignTop="@+id/item3"
android:layout_toEndOf="@id/item3"
android:layout_toRightOf="@+id/item3"
android:paddingBottom="5dp"
android:text="on" />

<TextView
android:id="@+id/item6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/item3"
android:text=""
android:textSize="15dp" />

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item6"
android:orientation="horizontal">

<ImageButton
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="#c3d69b"
android:padding="0dp"
android:src="@drawable/myDrawable1" />

<ImageButton
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="#c3d69b"
android:padding="0dp"
android:src="@drawable/myDrawable2" />

<ImageButton
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="#c3d69b"
android:padding="0dp"
android:src="@drawable/myDrawable3" />

</LinearLayout>



</RelativeLayout>

编辑

我找到了一个更适合我的解决方法。只需将监听器分配给不同的项目就可以了。这段代码,我添加到可扩展 ListView 的适配器内

@Override
protected View newGroupView(Context context, Cursor cursor, boolean isExpanded, ViewGroup parent) {
//Log.d(TAG, "newGroupView");
//DatabaseUtils.dumpCursor(cursor);

final View view = mInflater.inflate(R.layout.group_list_item, parent, false);

image = (ImageView) view.findViewById(R.id.imageview);
button1 = (ImageButton) view.findViewById(R.id.button_1);
button2 = (ImageButton) view.findViewById(R.id.button_2);
button3 = (ImageButton) view.findViewById(R.id.button_3);

image .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "image clicked");
}
});

button1 .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "button1 clicked");
}
});

button2 .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "button2 clicked");
}
});

button3 .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "button3 clicked");

}
});

return view;
}

最佳答案

按钮是可聚焦的,导致这种奇怪的行为,将以下行添加到 xml 中的按钮

android:focusable="false"

关于java - 如何处理具有由嵌套布局组成的组 View 的 ExpandableListView 的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com