API レベル 11setDividerDrawable()
からsetShowDividers()
で導入されLinearLayout
、線形レイアウトで子要素間の仕切りを表示できるようになりました。この機能を本当に使いたいのですが、Honeycomb (API レベル < 11) より前のデバイスもターゲットにしています。
これを修正する 1 つの方法は、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 の互換ライブラリには存在しないようです。