【发布时间】:2014-04-10 22:48:09
【问题描述】:
(好吧,我研究了很多并找到了一些答案,但没有什么对我真正有用..所以我终于开了一个帐户在这里发帖。感谢社区之前所有的答案!)
上下文
我正在创建一个类别选择器(带有自定义适配器的 ListView)- 每个类别可以有多个子类别,每个子类别可以有多个子类别。对于选择器,我使用了一个带有自定义列表项的 ListView - TextView(显示类别)和一个 ImageView(向前箭头)来指示该类别是否有子类别 - 请参见此图片:
我希望用户执行以下操作
(1) 点击类别名称选择该类别
(2) 点击前进箭头查看所有子类别(它将用所有子类别重新填充 ListView)
问题从这里开始
我希望用户看到以下亮点/关注用户执行大约两个操作 (1) 和 (2)
强调行动 (1)
看这张图片:
当用户点击类别名称/行时突出显示该行。
这会自动发生,因为我已经设置了
listView.setOnItemClickListener()
动作亮点 (2)
看这张图片:
我希望用户仅在前进箭头上而不是行上看到突出显示。我可以使用
imageView.setOnClickListener()
在我的自定义适配器中,但我无法在前进箭头上突出显示
如何在 ImageView 上获得此高亮显示?
代码
Activity's onCreate() {
LayoutInflater inflater = getActivity().getLayoutInflater();
View categorySelectView = inflater.inflate(R.layout.cat_select, null);
LinearLayout categorySelectLayout = (LinearLayout) categorySelectView;
ListView categoryListView = (ListView) categorySelectLayout.findViewById(R.id.list_cat_select);
CategoryArrayAdapter categoryArrayAdapter = new CategoryArrayAdapter(this.getActivity(), CategoryAdapter.getAllCategories());
categoryListView.setAdapter(categoryArrayAdapter);
categoryListView.setOnItemClickListener(categorySelectClickHandler);
}
CategoryARrayAdapter's getView(int position, View covertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.cat_item, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.cat_name);
Category catToDisplay = categories.get(position);
textView.setText(catToDisplay.getName());
if(catToDisplay.isParent()) {
ImageView imageView = (ImageView) rowView.findViewById(R.id.cstrow_cat_expand);
imageView.setImageResource(R.drawable.cat_expand);
imageView.setOnClickListener(categoryExpandClickHandler);
imageView.setFocusable(false); // to make sure the highlight on row shows
imageView.setFocusableInTouchMode(false); // to make sure the highlight on row shows
}
return rowView;
}
【问题讨论】:
-
点击按钮更改背景。否则为 xml 文件中的按钮设置选择器。
-
部分使用
imageView.SetBackgroudColor(#color)可以解决问题。我将不得不手动将颜色重置为透明。我如何找到(和我们)默认系统突出显示颜色?android.R.drawable.listSelector提到它是默认颜色,但在使用getActivity().getResource().getDrawable(android.R.drawable.listSelector)时出现ResourceNotFound异常@
标签: android listview android-listview imageview highlight