0

LinearLayoutいくつかの要素を含む小さなパネルを表すAbsoluteLayoutを私のメインに追加しようとしていActivityます。このコードを使用していますが、アプリがクラッシュします。これは、ビューをメイン レイアウトに追加するパネル クラスのコンストラクターです。同様のコードは、実行時に作成されたボタンを追加するために機能しますが、これには機能しません。

public ButtonSetupPanel(String btnName, int keyCode, View v){
    AbsoluteLayout abs = (AbsoluteLayout) v.findViewById(R.id.mainbg);
    LinearLayout panel = (LinearLayout) v.findViewById(R.id.btnSetupPanel);
    panel.setLayoutParams(new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1023, 300));
    panel.setOnTouchListener(this);
    abs.addView(panel);
}

LogCat: (私は StandOut ライブラリを使用しています)

. 10以上

更新:問題は、これLinearLayoutが別の XML ファイルにあるため、他のレイアウト ファイルを膨らませて、定義されたビュー (LinearLayout) を表示する必要があることです。どうやって進める?

Update2:このコードを使用して必要なビューを取得しました

public ButtonSetupPanel(String btnName, int keyCode, View v){
    AbsoluteLayout abs = (AbsoluteLayout) v.findViewById(R.id.mainbg);
    LinearLayout view = (LinearLayout) LayoutInflater.from(v.getContext()).inflate(R.layout.btnsetup , null);
    LinearLayout panel = (LinearLayout) view.findViewById(R.id.btnSetupPanel);
    view.removeView(panel);
    panel.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    panel.setX(512f);
    panel.setY(300f);
    panel.setOnTouchListener(this);
    abs.addView(panel);
}
4

1 に答える 1

2

API レベル 3 から AbsoluteLayout が非推奨になったことをご存知ですか? RelativeLayout を使用してみてください。

子ビューを RelativeLayout に追加し、RelativeLayout.LayoutParams を幅、高さ、marginTop、および marginLeft 以外の既定値のみを持つように設定することで、絶対配置を再作成できます。上と左の余白は、AbsoluteLayout の上と左に似ています。また、負のマージンもサポートされています。

ソース: AbsoluteLayout の代替

于 2013-06-12T14:55:49.107 に答える