我想将Gallery
用作水平菜单,因此我使用Gallery tutorial代码使用TextView
代替ImageViews
1}}并更改适配器的String[]
方法,如下所示......
getView((...)
我现在遇到的问题如图所示...
正如你所看到的,'选中'public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(mContext);
tv.setText(mMenuItems[position]);
tv.setLayoutParams(new Gallery.LayoutParams(150, 100));
return tv;
}
应该是'灰色'(尽管我可以选择它),其他项目是'突出显示的,我想反过来。所以问题是TextView
做了什么导致这种情况以及如何覆盖它?
Gallery
自动应用我定义的样式?我是否必须应用我从适配器的Gallery
方法返回的TextView
样式,还是可以“全局”将它们应用于getView(...)
?
答案 0 :(得分:2)
您可以利用getSelectedItemPosition()
相应地更新视图,但您需要参考图库视图(下面的mGallery
):
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(mContext);
tv.setText(mMenuItems[position]);
tv.setLayoutParams(new Gallery.LayoutParams(150, 100));
if (position == mGallery.getSelectedItemPosition()) {
// set tv properties to make it look selected
} else {
// set tv properties to make it look unselected
}
return tv;
}