一般有两种方法
1,给每个item添加margin或padding。这个方法的缺点非常明显,如果要修改间隔则非常麻烦,而且item一旦设置了间隔则复用性不好,我也会为这个方法给出优化方案来解决这个问题。
2,在每一个item之间添加一个空白的view来顶起来。
但是我今天研究MagicIndicator的时候发现了一个新的方法。
这个方法和LinearLayout提供的divider非常相似,LinearLayout给出的方法是在每个item之间添加一个Drawable。
代码如下
int width = 50;
LinearLayout linearLayout = findViewById(R.id.ll_5_base);
GradientDrawable drawable = new GradientDrawable();
drawable.setSize(width,1);
linearLayout.setDividerDrawable(drawable);
linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
我们在看下MagicIndicator中的做法。
magicIndicator.setNavigator(commonNavigator);
LinearLayout titleContainer = commonNavigator.getTitleContainer(); // must after setNavigator
titleContainer.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
titleContainer.setDividerDrawable(new ColorDrawable() {
@Override
public int getIntrinsicWidth() {
return UIUtil.dip2px(FixedTabExampleActivity.this, 15);
}
});
这里留个疑问,有待探索。new ColorDrawable() 可不可以使用new Drawable()替代?