我有一个包含自定义列表项的ListView。每个列表项由2个线性布局组成,彼此相邻。 LinearLayout 1 | LinearLayout 2 |
我已经为两个LinearLayouts声明了状态列表drawable,其中state_pressed我正在改变LinearLayout的背景。
问题就出现了 - 当用户点击LinearLayout2时,只应更改LinearLayout2的背景,LinearLayout1的背景应保持不变。另一方面,当用户点击LinearLayout1时,只应更改LinearLayout1的背景。但是现在当用户点击两个LinearLayouts时,它们都会改变它们的背景。
在LinearLayout2上点击的行为应该是onListItemClick(),而当用户点击LinearLayout1时,应该出现一个对话框(如果这很重要)。
任何想法如何解决背景变化问题?我尝试过使用可聚焦和可点击的选项。如果我将clickable = true设置为两个LinearLayouts,则LinearLayout2的子项(TextViews)不会更改其颜色(TextViews应更改其文本颜色)。
谢谢!
答案 0 :(得分:0)
这是因为在使用列表视图时,您必须更改XML中的某些标记以使背景透明,以便它能够正确地处理您的背景。
将其添加到ListView XML代码中。
android:cacheColorHint="#00000000"
将ListView的背景设置为透明。
答案 1 :(得分: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
}
};
可能这可能对你有帮助