ListView ViewPager ScrollView 修改边界色

如果觉得android中默认的listview 滑动到上面或者底部的阴影色不好看,可以这么定义

先看效果图

public class ListView extends android.widget.ListView {

    private OnScrollListener mLegacyOnScrollListener;
    private final MulticastOnScrollListener mMulticastOnScrollListener = new MulticastOnScrollListener();

    public ListView(Context context) {
        this(context, null);
    }

    public ListView(Context context, AttributeSet attrs) {
        this(context, attrs, android.R.attr.listViewStyle);
    }

    public ListView(Context context, AttributeSet attrs, int defStyle) {
        super(new ContextWrapperEdgeEffect(context), attrs, defStyle);
        init(context, attrs, defStyle);
    }

    private void init(Context context, AttributeSet attrs, int defStyle) {
        int color = context.getResources().getColor(R.color.default_edgeeffect_color);

        if (attrs != null) {
            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.EdgeEffectView, defStyle, 0);
            color = a.getColor(R.styleable.EdgeEffectView_edgeeffect_color, color);
            a.recycle();
        }
        setEdgeEffectColor(color);
    }

    public void setOnScrollListener(OnScrollListener listener) {
        if (listener != null) {
            checkPrecondition(mLegacyOnScrollListener == null);
            mLegacyOnScrollListener = listener;
            addOnScrollListener(mLegacyOnScrollListener);
        } else if (mLegacyOnScrollListener != null) {
            removeOnScrollListener(mLegacyOnScrollListener);
            mLegacyOnScrollListener = null;
        }
    }

    public void setEdgeEffectColor(int edgeEffectColor) {
        ((ContextWrapperEdgeEffect) getContext()).setEdgeEffectColor(edgeEffectColor);
    }

    public void addOnScrollListener(OnScrollListener listener) {
        mMulticastOnScrollListener.add(listener);
    }

    public void clearOnScrollListeners() {
        mMulticastOnScrollListener.clear();
    }

    public void removeOnScrollListener(OnScrollListener listener) {
        mMulticastOnScrollListener.remove(listener);
    }

    void checkPrecondition(boolean state) {
        if (!state) {
            throw new IllegalStateException();
        }
    }
}

在xml中直接使用就可以

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ListViewActivity">

    <uk.co.androidalliance.edgeeffectoverride.ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:edgeeffect_color="@color/green"/>

</RelativeLayout>

自定义属性文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="EdgeEffectView">
        <attr name="edgeeffect_color" format="color"/>
    </declare-styleable>
</resources>

Viewpager scrollview等类似

参考Demo 下载地址

时间: 2024-08-10 02:01:58

ListView ViewPager ScrollView 修改边界色的相关文章

Cocos2d-JS中使用CocosStudio资源——ListView和ScrollView

在本篇博客中,我们将简要分析一下ListView和ScrollView之间的关系,如何正确使用两个控件进行设计,目前CocosStudio对两个控件的支持状况等. 一.ListView和ScrollView的一些思考 1. 两者联系: 首先,我们要知道ListView是继承自ScrollView的,也就是说,ListView在ScrollView的基础上,对一些细节功能进行了细化.ScrollView有的方法,ListView都有,而ListView有的,ScrollView未必有. 官方的JS

Android listview viewpager解决冲突 滑动

Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 在listview 上使用 addHeaderView 在第一栏添加 viewpager 当做header 如: 当触发 滑动事件 的时候容易引起 滑动冲突    (比如斜着滑动viewpager  的时候 listview会跳动) 特别是在  下拉刷新或者上拉加载 的时候 , 组件可能会传递到viewpager当中 查阅了很多的帖子  发现修改起来都非常麻烦

ListView与ScrollView冲突的4种解决方案

问题解决方案1.手动设置ListView高度    经过测试发现,在xml中直接指定ListView的高度,是可以解决这个问题的,但是ListView中的数据是可变的,实际高度还需要实际测量.于是手动代码设置ListView高度的方法就诞生了. /** * 动态设置ListView的高度 * @param listView */ public static void setListViewHeightBasedOnChildren(ListView listView) { if(listView

Android ListView,GridView,ScrollView,ProgressBar,SeekBar,RelativeLayout,EditText常用属性

ListView的一些特殊属性: 1.ListView的XML属性 [java] view plaincopy android:divider//在列表条目之间显示的drawable或color android:dividerHeight//用来指定divider的高度 android:entries//构成ListView的数组资源的引用.对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式 android:footerDividersEnabled//当设为false时,Lis

冲突--ListView与ScrollView冲突的4种解决方案

众所周知ListView与ScrollView都具有滚动能力,对于这样的View控件,当ScrollView与ListView相互嵌套会成为一种问题: 问题一:ScrollView与ListView嵌套导致ListView显示不全面 问题二:ScrollView不能正常滑动 解决方式一: ScrollView+LinearLayout+ListView可以换成ScrollView+LinearLayout+LinearLayout,对于开发中,ScrollView所能滚动的样式形式各异,另外的话

使用LinearLayout实现ListView,解决ListView和ScrollView滚动冲突

在项目中,我们常常会遇到一个ScrollView里面会嵌套ListView的情况,但往往你会发现,ListView和ScrollView的滚动时间会有冲突问题,造成ListView不能完全显示.虽然网上有给出解决方案,但事实上并不好用,并不完美. public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.g

【转】android 自定义ViewPager,修改原动画

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如何改变ViewPager 切换时的效果,实现个性化的图片切换~~ 看一下这样效果的图片切换: 是

详解嵌套ListView、ScrollView布局显示不全的问题

在项目开发中,可能经常遇到嵌套ListView.ScrollView的问题,就是重写onMeasure方法.解决如下 public class ExpandListView extends ListView { public ExpandListView(Context context) { super(context); } public ExpandListView(Context context, AttributeSet attrs) { super(context, attrs); }

简单解决ListView和ScrollView冲突,复杂情况仅供参考

ScrollView嵌套ListView冲突问题的最优解决方案 (转) 记录学习之用 项目做多了之后,会发现其实 ScrollView嵌套ListVew或者GridView等很常用,但是你也会发现各种奇怪问题产生.根据个人经验现在列出常见问题以及代码最少最简单的解决方法. 问题一 : 嵌套在 ScrollView的 ListVew数据显示不全,我遇到的是最多只显示两条已有的数据. 解决办法:重写 ListVew或者 GridView,网上还有很多若干解决办法,但是都不好用或者很复杂. @Over