0

我有一个带有自定义列表项的 ListView。每个列表项由 2 个并排的线性布局组成。线性布局 1 | 线性布局 2 |

我已经为两个 LinearLayouts 声明了状态列表可绘制对象,在 state_pressed 中我正在更改 LinearLayout 的背景。

问题来了 - 当用户点击 LinearLayout2 时,只有 LinearLayout2 的背景应该改变,LinearLayout1 的背景应该保持不变。另一方面,当用户点击 LinearLayout1 时,仅应更改 LinearLayout1 的背景。但是现在当用户点击两个 LinearLayout 中的任何一个时,它们都会改变背景。

在 LinearLayout2 上点击的行为应该是 onListItemClick() 而当用户在 LinearLayout1 上点击时应该出现一个对话框(如果这很重要)。

有什么想法可以解决背景更改问题吗?我尝试过使用可聚焦和可点击的选项。如果我将 clickable=true 设置为两个 LinearLayouts,LinearLayout2 的子项(TextViews)不会改变它们的颜色(TextViews 应该改变它们的文本颜色)。

谢谢!

4

2 回答 2

0

这是因为在使用列表视图时,您必须更改 XML 中的一些标签以使背景透明,以便它可以正确地与您的背景配合使用。

将此添加到您的 ListView XML 代码中。

android:cacheColorHint="#00000000"

将 ListView 的背景设置为透明。

于 2011-10-04T13:52:39.640 回答
0

好吧,如果您使用 BaseAdapter 作为扩展,我认为一个解决方案

首先为您的 xml 文件中的这两个布局提供唯一的 ID 并添加

android:clickable="true"

在你的方法中

 public View getView(int position, View convertView, ViewGroup parent) {

当你得到这些观点时

 holder.layout1_name=(LinearLayout)view.findViewById(R.id.layout1);
 holder.layout1_name.setOnClickListener( clicklayout1);
 holder.layout2_name=(LinearLayout)view.findViewById(R.id.layout2);
holder.layout2_name.setOnClickListener( clicklayout2);

在它们上添加点击监听器

private OnClickListener clicklayout1 = new OnClickListener() {
    public void onClick(View v) {

         //Do what you want to do here
    }
};


private OnClickListener clicklayout2 = new OnClickListener() {
    public void onClick(View v) {

         //Do what you want to do here
    }
};

也许这可以帮助你

于 2011-10-04T14:12:52.797 回答