我正在尝试使列表视图看起来渐渐变为黑色。基本上我想转这样的事情:
进入类似的事情:
我尝试了两种不同的方法: 第一个是覆盖ListView的onDraw(),这不起作用,我的“额外”绘图发生在listView后面。第二种方法是将另一个视图放在listView的顶部,这看起来是正确的,但是如果用户试图通过触摸视图滚动列表而不滚动视图,则看起来该视图消耗了touchevent,所以大约三分之一的名单是不可触及的。
关于如何实现这一点的任何提示?
答案 0 :(得分:2)
您可以在自定义视图中指定listitem背景。在getview(适配器类)中,基于项目位置。在xml中创建渐变并根据位置增加alpha值。
这是对我有用的代码。
listItem.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:minHeight="64dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="17sp"
android:textColor="@android:color/white"
android:id="@+id/textView"/>
</RelativeLayout>
ItemAdapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(rowResourceId, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.textView);
int id = Integer.parseInt(Ids[position]);
textView.setText(Model.GetbyId(id).name);
// this is the main idea behind the UX look n feel.
rowView.setBackgroundColor(context.getResources().getColor(android.R.color.black));
textView.setAlpha((float) position/Ids.length);
return rowView;
}
请随意在getView中使用holder设计模式。这只是一个概念证明。