2

プログラムで 2 つのビューを作成する必要があります (ビューの 1 つの ondraw にアクセスする必要があるため)。何らかの理由で、ビューを contentview に追加するために何をしても、ビューが上下に積み重なって表示されません。

RelativeLayout とレイアウトの配置を使用して XML を使用すると問題なく実行できますが、XML ではビュー オブジェクトを作成して ondraw メソッドをオーバーロードすることはできません。

プログラムによるアプローチのどこが間違っていますか? また、この問題を解決するにはどうすればよいですか?

LinearLayout mLinearLayout;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create a LinearLayout in which to add the ImageView
        mLinearLayout = new LinearLayout(this);

        TextView tv = new TextView(this);
            tv.setBackgroundColor(0xff333333);
        tv.setText("Enter your member number:");
        tv.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));



        DrawableView i = new DrawableView(this);
        i.layout(0,40,0,0);
        i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));

        mLinearLayout.addView(tv);
        mLinearLayout.addView(i,300,300);
        setContentView(mLinearLayout);
    }
4

3 に答える 3

1

レイアウトの向きを垂直に設定しようとしましたか:

mLinearLayout.setOrientation(1);

于 2010-06-03T09:00:43.357 に答える
1

線形レイアウト オブジェクトの向きを垂直に設定できます

于 2010-06-03T06:40:43.373 に答える
1

XML よりもこのコードをデバッグする方が難しいですが、2 つの問題があるようです。

まず、線形レイアウトの方向を垂直に設定できませんでした。横向きの場合、すべてが 1 行になります。垂直レイアウトの場合、各ウィジェットは上から下に向かう別々の行になります。

第二に、「Fill Parent」が疑わしいように見えます。相対レイアウトまたは絶対的なサイズ変更によって妨げられない限り、塗りつぶしの親はすべてを引き継ぎ、他のすべてのウィジェットを非表示にします。ほとんどの場合、それは間違った解決策です。代わりにウェイトを使用してみてください。

最初に XML でこれを好きなように取得してから、プログラムによるセットアップに変換し、変換を可能な限り機械的に維持することを検討してください。幸運を!

于 2010-06-03T07:04:49.110 に答える