0

再利用可能でモジュール化するために、独自の LinearLayout を作成しようとしています。最初に私のコードは次のようになりましたが、うまくいきました:

mLlHeader = (LinearLayout)view.findViewById(R.id.ll_header);
        mTvCrump = new TextView(mContext);
        mTvCrump.setText("> "+((Item) mNavigationHistory.get(mNavigationHistory.size()-1)).getName());
        mTvCrump.setId(mNavigationHistory.size()-1);
        mTvCrump.setClickable(true);
        mTvCrump.setOnClickListener(mBreadcrumpListener);
        mBreadcrump.add(mTvCrump);
        mLlHeader.addView(mTvCrump,mNavigationHistory.size()-1);

今、私は次のような独自の LinearLayout クラスを作成したいと思います:

public class Breadcrump extends LinearLayout {

    private List<? super Item> mNavigationHistory = new ArrayList<Item>();
    private List<TextView> mElements = new ArrayList<TextView>();

    public Breadcrump(Context context) {
        super(context);
    }

    public Breadcrump(Context context, AttributeSet attrs) {
    super(context, attrs);
}

    public void addElement (String name) {

    }

}

私のxmlは次のようになります:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/cell_selected"
    android:gravity="left"
    android:orientation="vertical"
    android:padding="5dp" >

      <com.client.views.Breadcrump
        android:id="@+id/ll_breadcrump"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" /> 
</LinearLayout>

次のように使用します。

mLlHeader = (Breadcrump)view.findViewById(R.id.ll_breadcrump);
....

編集

ここで、カスタム ビューを使用するレイアウト xml ファイルに名前空間を追加し、属性セットを持つビュー クラスで新しいコンストラクターを追加しました。これでアプリが起動します。しかし、それは私のカスタムビューだけを表示し、残りのレイアウトは白ですか?

4

1 に答える 1

2

レイアウト XML ファイルには、おそらく次のようなものがあります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_header"
    ... />

に変更してみてください

<?xml version="1.0" encoding="utf-8"?>
<com.client.views.Breadcrump
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_header"
    ... />

編集:あなたの活動でそれを使用する方法?

XML レイアウト ファイルの名前がmain.xmlsetContentView(R.layout.main)の場合は、アクティビティのonCreate()メソッドを呼び出すだけです。内部Breadcrumpで初期化されます。次に、それへの参照を取得できます(Breadcrump)view.findViewById(R.id.ll_header)

于 2013-05-05T15:09:00.030 に答える