从 API 级别 11开始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 的兼容性库中。