android– 将listview行的颜色填充到某个百分比

android– 将listview行的颜色填充到某个百分比,第1张

概述我试图用一种颜色填充列表视图的行到百分之几.这应该在用户点击任何列表项后完成.这很难说,所以请看下图:请告诉我如何继续,我不知道如何实施.我正在考虑在用户点击事件后添加视图并设置此视图的背景颜色.如果可能的话,请告诉我.谢谢解决方法:我认为下面描述了一个选项:我会创

我试图用一种颜色填充列表视图的行到百分之几.
这应该在用户点击任何列表项后完成.

这很难说,所以请看下图:

请告诉我如何继续,我不知道如何实施.我正在考虑在用户点击事件后添加视图并设置此视图的背景颜色.

如果可能的话,请告诉我.

谢谢

解决方法:

我认为下面描述了一个选项:

我会创建一个List视图,对于列表中的每个项目,我将创建两个视图:

>一个TextVIEw(显示文本选项) – >默认是可见的
>一个视图(如果用户在列表中单击,则绘制进度) – >默认是不可见的.

注意:此简单视图与进度将具有相同的TextVIEw高度.它完全用背景颜色着色(例如蓝色).然后,您可以通过设置其权重(从0到100)来设置此视图的长度.适配器将重量改变重量.您可以在布局资源文件(List_vIEw_each_row.xml)中设置的其他属性.

此外,我相信您必须创建自己的自定义列表适配器(如果列表应显示文本或进度,则正确处理).此自定义列表应扩展BaseAdapter,并应覆盖必需的方法.

因此,在单击任何选项后,您可以更改您的适配器(您应该通知您的适配器用户在某些选项中使用了).根据这些新信息,适配器可以隐藏所有TextVIEw并仅显示带有进度的视图.

下面是一个示例代码:
您可以在适配器中添加安全检查(null poiter).我用了一个简单的数组.您可以更改为ArrayList并以dinamically方式添加/删除项目.此外,您只能在“OnItemClickListener”中设置进度值.这只是一个例子.

主要活动

public class MainActivity extends Activity {    private MyCustomlistadapter adapter;     protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        ((ListVIEw) findVIEwByID(R.ID.List_vIEw)).setonItemClickListener(new OnItemClickListener() {            @OverrIDe            public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) {                // Force List vIEw to populate its content again (Now, with progress instead of text)                adapter.setIfUserAlreadyClickedOption(true);                adapter.notifyDataSetChanged();            }        });        adapter = new MyCustomlistadapter();        // Set click to false (user dID not clicked yet)        adapter.setIfUserAlreadyClickedOption(false);        // Set text and progress        adapter.setoptions(new String []{"Option1", "Option2", "Option3"});        adapter.setProgressbarValues(new float [] {50,75,25});        ((ListVIEw)findVIEwByID(R.ID.List_vIEw)).setAdapter(adapter);    }}

MyCustomlistadapter.java

public class MyCustomlistadapter extends BaseAdapter {    private boolean userAlreadyCliced;    private String [] stringTexts;    private float [] progressbarValues;    public MyCustomlistadapter() {        userAlreadyCliced = false;    }    public voID setIfUserAlreadyClickedOption(boolean clicked) {        userAlreadyCliced = clicked;    }    public voID setoptions(String  [] text) {        stringTexts = text;    }    public voID setProgressbarValues(float [] values) {        progressbarValues = values;    }    @OverrIDe    public int getCount() {        return stringTexts.length;    }    @OverrIDe    public Object getItem(int position) {        return stringTexts[position];    }    @OverrIDe    public long getItemID(int position) {        return 0;    }    @OverrIDe    public VIEw getVIEw(int position, VIEw vIEw, VIEwGroup parentVIEwGroup) {        if(vIEw == null) {            vIEw = LayoutInflater.from(parentVIEwGroup.getContext()).inflate(R.layout.List_vIEw_each_row, parentVIEwGroup, false);        }        if(userAlreadyCliced) {            // HIDe Text            vIEw.findVIEwByID(R.ID.progress_vIEw).setVisibility(VIEw.VISIBLE);            // Show Text and set progress            ((linearLayout.LayoutParams) vIEw.findVIEwByID(R.ID.progress_vIEw).getLayoutParams()).weight = progressbarValues[position];            vIEw.findVIEwByID(R.ID.text_vIEw).setVisibility(VIEw.GONE);        } else {            // HIDe Progress            vIEw.findVIEwByID(R.ID.progress_vIEw).setVisibility(VIEw.GONE);            // Show and set text            vIEw.findVIEwByID(R.ID.text_vIEw).setVisibility(VIEw.VISIBLE);            ((TextVIEw)vIEw.findVIEwByID(R.ID.text_vIEw)).setText(stringTexts[position]);        }               return vIEw;    }}

activity_main.xml中

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:orIEntation="vertical" >    <ListVIEw        androID:ID="@+ID/List_vIEw"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content" >    </ListVIEw></linearLayout>

List_vIEw_each_row.xml

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:orIEntation="horizontal"    androID:weightSum="100" >   <VIEw       androID:ID="@+ID/progress_vIEw"       androID:background="#0000FF"       androID:layout_wIDth="0dp"       androID:layout_height="40dp"/>    <TextVIEw        androID:ID="@+ID/text_vIEw"        androID:visibility="visible"        androID:layout_wIDth="match_parent"        androID:layout_height="40dp" /></linearLayout>
总结

以上是内存溢出为你收集整理的android – 将listview行的颜色填充到某个百分比全部内容,希望文章能够帮你解决android – 将listview行的颜色填充到某个百分比所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1113480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存