39

View1を拡張するクラスがありますViewR.layout.test2.xmlこのクラスで膨らませたいView1。このクラスに次のコードを入れました

public class View1 extends View {

    View view;
    String[] countries = new String[] {"India", "USA", "Canada"};

    public View1( Context context) {
        super(context);
        LayoutInflater  mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view=mInflater.inflate(R.layout.test2, null, false);
    }
}

別のクラスからHome、この膨張したビューがいくつかの状況でそこにあるようにしたい 、Homeクラスで次のコードを書きました:

public class Home extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        CreateView();   
    }

    public void CreateView() {
        LinearLayout lv=(LinearLayout)findViewById(R.id.linearlayout);
        View1 view = new View1(Home.this);
        lv.addView(view);
    }
}

しかし、プロジェクトを実行しても、アクティビティには何も表示されません。

4

6 に答える 6

52

クラスにビューを追加することはできませんView。代わりに、ViewGroupまたはそのサブクラスの 1 つ (など)Linearlayoutを使用する必要がありますRelativeLayout。次に、コードは次のようになります。

    public class View1 extends LinearLayout {

        View view;
        String[] countries = new String[] {"India", "USA", "Canada"};

        public View1( Context context) {
            super(context);
            inflate(context, R.layout.test2, this);
        }
    }
于 2012-06-14T08:22:45.623 に答える
12

これを使って

    LayoutInflater li = (LayoutInflater)getContext().getSystemService(infService);
    li.inflate(R.layout.test2, **this**, true);

thisnull ではなくを使用し、falseパラメーター (boolean の AttachToRoot ) を次のように変更する必要があります。true

于 2012-06-14T08:25:56.170 に答える
3

以下のコードを使用してレイアウトを拡張すると、そのビューを任意の目的に使用できます。これにより、XMLファイルの最も親的なレイアウトが得られます。キャストと入力し、それに応じて使用します。

View headerView = View.inflate(this, R.layout.layout_name, null);
于 2012-06-14T08:31:42.250 に答える
1

You are adding in home activity blank view. Because in View1 class you have only inflate view but not add anywhere.

于 2015-10-27T06:06:48.277 に答える