1、最近有一个需求,需要对ListView和recyclerView是否应淡化边缘;
2、在开发中遇到问题发现fadingEdge=“vertical”,fadingEdgeLength="150dp"不生效,于是各种尝试,最终需要增加fadingEdgeLength=“150dp”,requiresFadingEdge="vertical"就可生效;
3、下面我们来看code:
1)先看一下xml如何设置:
activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <!-- requiresFadingEdge:拉滚动条时 ,边框渐变的放向,none(边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡) -->    <!-- fadingEdgeLength:设置边框渐变的长度 -->    <com.application.application.MyListView        android:id="@+id/main_list"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:fadingEdgeLength="150dp"        android:requiresFadingEdge="vertical"        /></LinearLayout>

2)在设置这个属性如果出现不生效,可参考如下重写一下getTopFadingEdgeStrength和getBottomFadingEdgeStrength;

public class MyListView extends ListView {    public MyListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected float getTopFadingEdgeStrength() {        return 1f;    }    @Override    protected float getBottomFadingEdgeStrength() {        return 1f;    }}

3)我们来可以先主activity实现,其也可动态设置渐变效果,code里也已经标准,可参考;

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ListView lv = (MyListView) findViewById(R.id.main_list);         // 也可以在代码中动态设置边框渐变的长度         //lv.setFadingEdgeLength(150);         //垂直方向颜色变淡        // lv.setVerticalFadingEdgeEnabled(true);                // 去掉分割黑线        //lv.setDivider(null);        String[] data = new String[] { "item1", "item2", "item3", "item4",                "item5", "item6", "item7", "item8", "item9", "item10",                "item11", "item12","item13", "item14", "item15", "item16", "item17",                "item18", "item19" };        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_list_item_1, data);        lv.setAdapter(adapter);    }}

4)recyclerView和ListView设置相同,这里代码就不贴了,
比如向让recyclerView水平方向展示,在动态设置的时候,需要注意,要将setOrientation()和requiresFadingEdge一致,详细code就不写了,我们看一下要注意的地方;

        recyclerView.setFadingEdgeLength(150);               recyclerView.setHorizontalFadingEdgeEnabled(true);        //recyclerView.setVerticalFadingEdgeEnabled(true);...        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);        //linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);

5)下面来一张效果图:

recyclerView渐变效果code下载链接https://download.csdn.net/download/xiao_yuanjl/12275810

更多相关文章

  1. 使用ScrollView时解决android布局不能撑满全屏的问题
  2. Mac环境下对android app抓包
  3. Android_显示某个Activity时立即弹出软键盘
  4. Android初级进阶之Shape
  5. Android(安卓)Audio音量设置流程
  6. Gallery和GridView浅析
  7. 常用的控件使用方法(TextView及其常用属性)
  8. Android开发之自定义Notification(源代码分享)
  9. android 入门学习笔记 LayoutInflater的使用

随机推荐

  1. linux下《UNIX环境高级编程》(apue2)源码
  2. 编译linux内核前用make menuconfig设置时
  3. Linux/Unix下ODBC的安装
  4. 为什么Linux不需要磁盘碎片整理?——借以
  5. 使用Swoole加速Laravel(正式环境中)
  6. 在Mac OS X/Linux上的vscwprintf。
  7. vmware克隆Centos6.4虚拟机网卡无法启动
  8. linux虚拟机空间不足解决
  9. Linux---more命令学习
  10. 拆分gzip压缩日志文件而不将未压缩的拆分