带有分频器的LinearLayout在预蜂窝上

foe*_*ens 5 android android-layout android-linearlayout android-compatibility android-support-library

从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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,使用这样的实现将改变迭代子进程的任何客户端的行为.一些视图将是客户自己插入的视图,一些视图将被插入DividerLinearLayout.如果用户在指定索引处插入视图,也会发生问题.可以实现索引的转换,但如果做错了,这可能会导致令人讨厌的错误.此外,我认为需要覆盖更多的方法.

有没有更好的方法来解决这个问题?有人已经开发出可自由使用的DividerLinearLayout等效物吗?它似乎不存在于Android的兼容性库中.

dmo*_*mon 10

如果我没有弄错的话,ActionBarSherlock库已经实现了它,以提供向后兼容的ActionBar选项卡.您可能希望首先包含该库并在滚动自己之前给它一个旋转.

这是特定类的代码(com.actionbarsherlock.internal.widget.IcsLinearLayout).