我是靠谱客的博主 发嗲秋天,这篇文章主要介绍net.lucode.hackware.magicindicator使用及修改,现在分享给大家,希望可以做个参考。

net.lucode.hackware.magicindicator打造万能指示器。
相关文章已经有很多,且具体可以下载源码阅读。
今天遇上的问题是使用标题位置的修改,使用的标题view是ColorTransitionPagerTitleView,它的父类是SimplePagerTitleView,其中关于文字位置部分的在init方法中,但这个方法时private,就是说无法修改,他设置左右边距,即便设置LEFT,依旧会出现左边的一个边距,项目中不能有这个边距。所有改了源码

复制代码
1
2
3
4
5
6
7
protected void init(Context context) { setGravity(Gravity.CENTER); int padding = UIUtil.dip2px(context, 10); setPadding(padding, 0, padding, 0); setSingleLine(); setEllipsize(TextUtils.TruncateAt.END); }

对其扩展:
* -设置标题位置居左
*/

public class ColorMagicTitleView extends ColorTransitionPagerTitleView {

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
public ColorMagicTitleView(Context context) { super(context); } @Override protected void init(Context context) { setGravity(Gravity.LEFT); int padding = UIUtil.dip2px(context, 10); setPadding(0, 0, padding, 0); setSingleLine(); setEllipsize(TextUtils.TruncateAt.END); }

}
中间发现一个当我想要获取所有的标题view的时候,没有提供getter方法,即private LinearLayout mTitleContainer;成员变量,所以只能使用反射了,拿到代码的小伙伴也可以添加getter方法。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/** * 获取所有的标题 * @param commonNavigator */ private void getIndicatorTitleContainer(CommonNavigator commonNavigator){ Class clazz = commonNavigator.getClass(); Field[] attrFieldes = clazz.getDeclaredFields(); Object container = null; for (Field zField : attrFieldes) { zField.setAccessible(true); Log.d("IndicatorTitleContainer", "Field name -->" + zField.getName()); if (zField.getName().contains("mTitleContainer")) { try { container = zField.get(commonNavigator); } catch (IllegalAccessException e) { e.printStackTrace(); } finally { break; } } } if (container != null && container instanceof LinearLayout){ LinearLayout mLinearLayout = (LinearLayout) container; for (int i=0; i < mLinearLayout.getChildCount(); i++){ SimplePagerTitleView mSimplePagerTitleView = (SimplePagerTitleView) mLinearLayout.getChildAt(i); commonNavigators.add(mSimplePagerTitleView); } } }

这个指示器很不错,推荐替换tablayout等控件。

最后

以上就是发嗲秋天最近收集整理的关于net.lucode.hackware.magicindicator使用及修改的全部内容,更多相关net内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部