package com.bwie.xlistviews;

import com.bwie.test.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

public class XListViewFooter extends LinearLayout {
    public final static int STATE_NORMAL = 0;
    public final static int STATE_READY = 1;
    public final static int STATE_LOADING = 2;

private Context mContext;

private View mContentView;
    private View mProgressBar;
    private TextView mHintView;

public XListViewFooter(Context context) {
        super(context);
        initView(context);
    }

public XListViewFooter(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

public void setState(int state) {
        mHintView.setVisibility(View.INVISIBLE);// 开始底部控件都隐藏
        mProgressBar.setVisibility(View.INVISIBLE);
        //mHintView.setVisibility(View.INVISIBLE);
        if (state == STATE_READY) {// 如果是第一页状态,那么“查看更多”显示
            mHintView.setVisibility(View.VISIBLE);
            mHintView.setText(R.string.xlistview_footer_hint_ready);// 松开显示更多
        } else if (state == STATE_LOADING) {// 当加载的时候
            mProgressBar.setVisibility(View.VISIBLE);// 加载进度条显示
        } else {
            mHintView.setVisibility(View.VISIBLE);
            mHintView.setText(R.string.xlistview_footer_hint_normal);// 查看更多
        }
    }

public void setBottomMargin(int height) {
        if (height < 0)
            return;
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContentView
                .getLayoutParams();
        lp.bottomMargin = height;
        mContentView.setLayoutParams(lp);
    }

public int getBottomMargin() {
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContentView
                .getLayoutParams();
        return lp.bottomMargin;
    }

/**
     * normal status
     */
    public void normal() {
        mHintView.setVisibility(View.VISIBLE);
        mProgressBar.setVisibility(View.GONE);
    }

/**
     * loading status
     */
    public void loading() {
        mHintView.setVisibility(View.GONE);
        mProgressBar.setVisibility(View.VISIBLE);
    }

/**
     * 当禁用拉加载更多隐藏底部视图
     */
    public void hide() {
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContentView
                .getLayoutParams();
        lp.height = 0;
        mContentView.setLayoutParams(lp);
    }

/**
     * 显示底部视图
     */
    public void show() {
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContentView
                .getLayoutParams();
        lp.height = LayoutParams.WRAP_CONTENT;
        mContentView.setLayoutParams(lp);
    }

private void initView(Context context) {
        mContext = context;
        LinearLayout moreView = (LinearLayout) LayoutInflater.from(mContext)
                .inflate(R.layout.xlistview_footer, null);
        addView(moreView);
        moreView.setLayoutParams(new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

mContentView = moreView.findViewById(R.id.xlistview_footer_content);
        mProgressBar = moreView.findViewById(R.id.xlistview_footer_progressbar);
        mHintView = (TextView) moreView.findViewById(R.id.xlistview_footer_hint_textview);
    }

}

最新文章

  1. 自定义 URL Scheme 完全指南
  2. oracle学习笔记&mdash;&mdash;配置环境
  3. asp.net常见面试题(一)
  4. Java基础知识强化69:基本类型包装类之Character案例(统计字符串中大写小写以及数字的次数)
  5. Android性能优化典范【转】
  6. 页面提交进不了Action的原因
  7. JS中的循环---最全的循环总结
  8. SpringMVC解决跨域的两种方案
  9. 历经15个小时,终于评出这8本最受欢迎的SQL书籍
  10. 数据库优化案例——————某知名零售企业ERP系统
  11. 第8章 概述 - Identity Server 4 中文文档(v1.0.0)
  12. iOS----------弹窗动画
  13. cas单点登录-https的配置(一)
  14. Tarjan算法【强连通分量】
  15. Hbase-2.0.0_01_安装部署
  16. JavaScript修改日期格式
  17. The attribute required is undefined for the annotation type XmlElementRef
  18. 301-React Ext-React创建组件的三种方式及其区别
  19. CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)
  20. mvc路由问题

热门文章

  1. Bootstrap的粗体和斜体
  2. SDL2.0的几何图行绘画
  3. [Selenium]点击Calendar控件后,Calendar dialog很快消失
  4. HBase启动和停止命令
  5. 启动一个新的activity并携带数据,返回数据给上一个activity
  6. 【转载】PHP运行模式的深入理解
  7. OpenCV白平衡算法之灰度世界法(消除RGB受光照影响)
  8. VB6 GDI+ 入门教程[2] GDI+初始化
  9. 第二周 SCRUM站立会议
  10. hdu------(1757)A Simple Math Problem(简单矩阵快速幂)