当前位置: 首页 > 知识库问答 >
问题:

更改ListView项背景色,但保留默认选择器样式?

刘高峯
2023-03-14

我试图在我的Listview适配器中以编程方式设置自定义背景颜色,但我想保留Android的默认ListView选择器样式。

我正在使用项目视图的“SetBacgroundResource”方法设置背景颜色。

我使用的是Android 4.0,我尝试了这个博客http://Daniel-codes . blogspot . co . NZ/2010/07/how-to-change-listview-rows-background . html中的例子,但使用这个例子时,选择器显示了未选中的背景色,但没有显示。

如何在Android 4.0 ICS中实现这一点?

编辑:这是我用于列表项背景可绘制的资源。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_window_focused="false" android:state_selected="true" android:drawable="@android:color/transparent" /> 
   <item android:state_selected="true" android:drawable="@android:color/transparent" /> 
   <item android:state_pressed="true" android:state_selected="false" android:drawable="@android:color/transparent" /> 
   <item android:state_selected="false" android:drawable="@color/list_item_first" /> 
</selector>

我用来设置这个背景绘图的代码在我的adatapter的GetView方法中。代码是:

convertView.setBackgroundResrouce(R.drawable.list_item_dark);

共有3个答案

姚德容
2023-03-14

试试这个:

在您的行布局中设置背景属性

android:background="@drawable/your_selector"

和您的< code>listView集

android:listSelector="@drawable/your_selector"
壤驷坚
2023-03-14

尝试编写您的自定义适配器并像这样设置 rowView 背景颜色(如果位置为奇数黑色,甚至为红色)。您还可以将颜色列表发送到适配器并为每行设置不同的颜色View

public View getView(int position, View convertView, ViewGroup parent) {
            View rowView = convertView;
        enter code here

            if(rowView == null)
            {
                if((position % 2)==1){ 
                rowView.setBackgroundColor(Color.BLACK)
                    //colorList :setBackgroundColor( colorList.get(position) )
                }
                 else{
                    rowView.setBackgroundColor(Color.RED)
                }
             }           
            return rowView;
        }
孟英叡
2023-03-14

您是否尝试将< code>ListView的属性android:drawSelectorOnTop设置为true?< br >您可以为项目设置背景,并在按下时看到项目高亮显示。

 类似资料:
  • 问题内容: 我有一个框,当单击框并显示所有选项时,我正在尝试更改选项的背景色。 HTML: CSS: 问题答案: 你需要把对标签,而不是标签… 如果要为每个标签设置样式,请使用css 选择器:

  • 我有一个选择框,当选择框被单击并显示所有选项时,我正在尝试更改选项的背景颜色。

  • 当我触摸一个物品时,只要按下它,它就会闪烁蓝色。我想保持蓝色直到另一个项目被选中,就像Nexus7上的Gmail应用一样。 最干净的方法是什么?我宁愿避免手动设置背景,我假设有一种方法可以将一个元素标记为“活动的”元素,并相应地将其主题化。

  • 我有一个这里提到的类似用例。我想将SWT表格项目选择背景颜色从默认的灰色或蓝色更改为其他颜色。我尝试使用StyledCellLabelProvider#update方法,但没有用。它只是将所有表项的背景色更新为给定的颜色。但我需要它只用于选定的项目。下面是我的标签提供程序更新方法的代码段 提前感谢您的帮助!

  • 你能帮帮我吗。我需要更改我的列表视图项目的背景色,该项目由setSelection(int pos)功能手动选择,我需要保留新颜色,直到调用新的setSelection。我读过一些关于如何做到这一点的主题,但仍然没有成功。谢谢

  • 慢慢地,jpanel的背景色将变得比以前更不透明。值得注意的是,我正在使用jpanel的挫折方法。以下是一些您可能想要查看的代码链接。 自定义GUI按钮 它所在的Gui--请看第158行。

  • 问题内容: 我有一个Java按钮,可打开JColorChooser对话框。我希望按钮的颜色根据对话框中选择的颜色进行更改。我曾尝试调用按钮的setBackgroundColor()方法,但对我而言没有任何效果(该按钮位于Winsows 7中的JToolBar上)。同样,此问题表明更改按钮的背景不是平台无关的。 也许此问题的答案不是首先使用按钮。因此,我的问题是:是否存在一种方法来显示Java中反映

  • 有没有办法清除JFrame的背景色或至少将其更改回默认颜色? 更新:谢谢你的回答,但是看起来我好像意外地得到了我想要的答案。我刚拍了一帧。getContentPane()。setBackground(null)将其恢复为默认背景。我在看了评论后想了想,所以如果没有你的帮助,我不可能做到这一点。再次感谢。