5

ユーザーが別のボタンをタップすると、既存の Android ビューにプログラムでボタンを追加しています。機能的には動いていますが、スタイル情報の一部が無視されているようです。

スタイル値が事前に入力された、ボタンだけを含む別のレイアウトを作成して、ボタンを追加しています。

<Button xmlns:android="http://schemas.android.com/apk/res/android" style="@style/FileStorageDeleteButton"></Button>

を使用するgetLayoutInflaterと、このボタンをレイアウトに追加できます。

buttonDelete = (Button) getLayoutInflater().inflate(R.layout.pete_button_filedelete, null);

LinearLayout layout = (LinearLayout)findViewById(R.id.layoutFileStorage);

layout.addView(buttonDelete, 1);

色、テキストなどを設定する値ディレクトリに XML ファイルがあります@style/FileStorageDeleteButton。そのほとんどは、ボタンが追加されたときにボタンによって使用されます。しかし、何らかの理由で 4 つの margin 属性とlayout_belowが無視されています。

このボタンが表示されても、LogCat にエラーは表示されません。スタイリングが適用されていないかのようです。そのレイアウトの XML にボタンを手動で含めると、すべてのスタイルが正常に使用されます。

どんな助けでも大歓迎です。

4

1 に答える 1

3

addView()レイアウト パラメーターは単一のビューには関係なく、常に周囲のビューのコンテキストで取得されるため、呼び出すときにレイアウト パラメーターを渡す必要があります。引数addView()を取るバリアントがあります。LayoutParams

編集 詳細を追加

のセットを作成しLinearLayout.LayoutParamsてそこにマージンを設定し、それをに渡す必要がありますaddView()

layout_belowLinearLayoutとにかくa では無視されます(その属性は a にのみ関連しRelativeLayoutます。呼び出すaddView(buttonDelete, 1)と、線形レイアウトのどこにビューを配置するかを伝えます。

于 2013-03-22T14:58:55.547 に答える