Android-以编程方式获取列表视图(项目)的背景颜色

Posted

技术标签:

【中文标题】Android-以编程方式获取列表视图(项目)的背景颜色【英文标题】:Android-Get Background color of listview(item) programmatically 【发布时间】:2016-05-20 18:33:14 【问题描述】:

首先我为下面的列表视图项目创建背景颜色, 我有两个这样的自定义列表视图:

我设置颜色的自定义列表:

代码:

@Override
    public View getView(final int position, View convertView, ViewGroup parent) 
        Holder holder = new Holder();
        final View rowView;
        rowView = inflater.inflate(R.layout.table_one, null);
        holder.tv = (TextView) rowView.findViewById(R.id.textView1);
        holder.tv.setText(result[position]);
        rowView.setBackgroundColor(Color.WHITE);
        rowView.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 

                if (position == 0) 
                    rowView.setBackgroundColor(Color.BLUE);
                    MainActivity.counter = Color.BLUE;
                 else if (position == 1) 
                    rowView.setBackgroundColor(Color.YELLOW);
                    MainActivity.counter = Color.YELLOW;
                 else if (position == 2) 
                    rowView.setBackgroundColor(Color.GREEN);
                    MainActivity.counter = Color.GREEN;
                 else if (position == 3) 
                    rowView.setBackgroundColor(Color.MAGENTA);
                    MainActivity.counter = Color.MAGENTA;
                
            
        );
        return rowView;
    

当用户点击列表视图时,它会变为上图指定的颜色,

单击按钮时,我需要获取列表中保存的列表视图的颜色。

我该怎么做,求帮助

在我的 MainActivity 我有按钮,

check = (Button) findViewById(R.id.check);
 check.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 

                Toast.makeText(getApplicationContext(), "Checked", Toast.LENGTH_SHORT).show();
            
        );

【问题讨论】:

您想要单行的背景还是整个列表的背景? @amalBit 对于整个列表视图 使用 settag 和 gettag @amalBit 我需要整个列表视图,如果可能的话,你也可以告诉我单个列表项的值。 tnq Listview 只是一天结束时的另一个视图。 sp 你可以试试这个***.com/a/8089242/2219600 【参考方案1】:

如果您想从 ListView 获取视图背景颜色

ListView listView = (ListView) findViewById(R.id.my_list);

获取后台尝试

Drawable listDrawableBackground = listView.getBackground();

如果背景是一种颜色,获取颜色,你可以试试

ColorDrawable listViewColor = (ColorDrawable) listView.getBackground();

要获得实际颜色,请使用

int colorId = listViewColor.getColor();

您可以将此 colorId 与现有颜色进行比较,如下所示:

if (colorID == R.color.blue) Log("color is blue");

另一种方法是将标签添加到 ListView,标签将是颜色,比如说

tag = "#ccc",你可以使用

String colorCode = (String)listView.getTag();

现在您有了 colorCode,您可以在程序的任何地方重复使用它。

【讨论】:

我没有得到颜色使用这个你能告诉我使用按钮来获取整个列表行

以上是关于Android-以编程方式获取列表视图(项目)的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中以编程方式创建多个列表

多个ListViews在android中以编程方式创建

如何以编程方式动态创建所有 Android ui 组件的列表?例如文本视图、图像视图等

android - 获取以编程方式创建的视图的估计高度

Android Drag-Sort-Listview - 以编程方式启动拖放

如何从列表视图中的项目单击中获取歌曲在android中