我有一个自定义列表项的ListView。每个列表项由2个线性布局组成,一个紧挨着另一个。LinearLayout 1 | LinearLayout 2 |
我已经为两个LinearLayouts声明了状态列表drawables,在state_pressed中我正在改变LinearLayout的背景。
问题来了——当用户点击LinearLayout2时,只有LinearLayout2的背景应该改变,LinearLayout1的背景应该保持不变。另一方面,当用户点击LinearLayout1时,只有LinearLayout1的背景应该被改变。但是现在,当用户点击两个LinearLayouts中的任何一个时,它们都会改变它们的背景。
点击LinearLayout2的行为应该像onlisttitemclick()一样,而当用户点击LinearLayout1时,应该出现一个对话框(如果这很重要)。
有什么办法可以解决背景变化问题吗?我试过使用可聚焦和可点击的选项。如果我设置clickable=true对两个LinearLayouts, LinearLayout2的子(TextViews)不改变他们的颜色(TextViews应该改变他们的文本颜色)。
谢谢!
这是因为当使用列表视图时,您必须更改XML中的一些标记以使背景透明,以便它能够正确地与您的背景一起工作。
添加到您的ListView XML代码。
android:cacheColorHint="#00000000"
设置ListView的背景为透明。
我认为如果你使用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
}
};
也许这对你有帮助