android中目录不显示页码,android 自定义显示页数

很多时候在想依赖系统提供的组件来是实现某种功能,用起来都很麻烦。比如显示页数,作者因为布局问题,实现起来有很多局限性,要么不能够重用,要么就是不能达到自己的效果。所以这就有促使咱们自己定义view,想怎么画就怎么画……

作者的理解:在实现自定义view的时候,大多数情况下复写了onMeasure和onLayout及onDraw方法就基本可以是实现自定义view了,接着就是添加一些set方法,提供给外面设置。也可以基本的总结为3个点:

1>onMeasure:设置自定义view的宽高,一定要设置,不然会显示不出来,如果里面有子view,也得循环设置一下

2>onLayout:设置真正自定义view中的内容(或子view)相对于这个自定义view的位置,很重要

3>onDraw:当自定义view里都是系统有的子控件的时候,这个可以不复写

继承Linearlayout,显示页数,非常实用,mark分享下O(∩_∩)O~。。。。

public class PageView extends LinearLayout {

private static final String TAG="PageLinearLayout";

Context cxt;

public PageView(Context context) {

this(context, null);

}

public PageView(Context context, AttributeSet attrs) {

super(context, attrs);

cxt = context;

}

/**

* 添加数据

*

* @param pageCount

*/

public void setData(int pageCount,int page){

this.removeAllViews();

for(int i=0;i

ImageView iv = new ImageView(cxt);

if(i== page){

iv.setImageResource(R.drawable.flag_current_page1);

}else{

iv.setImageResource(R.drawable.flag_current_page2);

}

this.addView(iv);

}

invalidate();

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

}

private int spacing,iv_w,iv_h,start_x,start_y;

/**

* @param spacing 间距

* @param start_x 页图片开始显示坐标

* @param start_y

* @param iv_w 页图片宽度

* @param iv_h 页图片高度

*/

public void setParams(int spacing,int start_x,int start_y,int iv_w,int iv_h){

this.spacing = spacing;

this.iv_h = iv_h;

this.iv_w = iv_w;

this.start_x = start_x;

this.start_y = start_y;

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

int childCount = getChildCount();

for(int i=0;i

getChildAt(i).measure(iv_w,iv_h);

}

setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);

}

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b) {

super.onLayout(changed, l, t, r, b);

int childCount = getChildCount();

int startLeft = start_x-((childCount/2)*(iv_w+spacing));

for(int i=0;i

//Log.i(TAG,"###startLeft:"+startLeft);

View child=getChildAt(i);

if(child.getVisibility() != View.GONE){

child.layout(startLeft,start_y,startLeft+iv_w,start_y+iv_h);

}

startLeft+=(iv_w+spacing);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值