从API级别setDividerDrawable()
和setShowDividers()
引入LinearLayout
,启用线性布局以显示子元素之间的分隔符。我真的很想使用这个功能,但我也在Honeycomb之前定位设备(API级别< 11)。
解决此问题的一种方法是扩展LinearLayout并手动添加分隔符。这是一个原型:
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
public class DividerLinearLayout extends LinearLayout
{
public DividerLinearLayout(Context context)
{
super(context);
}
public DividerLinearLayout(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public DividerLinearLayout(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
@Override
public void addView(View child)
{
if(super.getChildCount() > 0)
{
super.addView(LayoutInflater.from(getContext()).inflate(R.layout.divider, null));
}
super.addView(child);
}
}
但是,使用这样的实现将改变迭代子进程的任何客户端的行为。一些视图将是客户自己插入的视图,一些视图将由DividerLinearLayout
插入。如果用户在指定索引处插入视图,也会发生问题。可以实现索引的转换,但如果做错了,这可能会导致令人讨厌的错误。此外,我认为需要覆盖更多的方法。
有没有更好的方法来解决问题?有人已经开发出可以自由使用的DividerLinearLayout
等价物吗?它似乎不存在于Android的兼容性库中。