我试图用一种颜色填充列表视图的行到百分之几.
这应该在用户点击任何列表项后完成.
这很难说,所以请看下图:
请告诉我如何继续,我不知道如何实施.我正在考虑在用户点击事件后添加视图并设置此视图的背景颜色.
如果可能的话,请告诉我.
谢谢
解决方法:
我认为下面描述了一个选项:
我会创建一个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行的颜色填充到某个百分比所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)