1

次のボタンがあります

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="5dp"
android:textSize="10sp"
android:text="Button" />

今私のコードでは、特定の要因に応じて、これらのボタンの動的な量をプログラムで作成したいと考えています。

今、私は次のコードを機能させるためにかなりの時間を費やしました:

 Button txtName = new Button(getActivity(), null, android.R.attr.buttonStyleSmall);
    txtName.setClickable(false);
    txtName.setTextSize(5);
    txtName.setMaxLines(1);
    txtName.setMaxHeight(40);
    txtName.setMinHeight(0);
    txtName.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    txtName.setText(tagsList.get(i));

何らかの理由で、そのコードは私がやりたいことをしません。それについての私の他の質問を参照してください:その他の質問

しかし、私の質問は、上記のボタンからそのレイアウト コードを取得し、それを使用して、リスト アダプターで行うようにボタンを複製することはできますか?

つまり、ボタンのレイアウトを説明する 1 つの XML が必要で、それを同じページの多くのボタンに使用したいのですか?

4

3 に答える 3

6

あなたが探しているのは膨らむことです。

現時点では、あなたのアプローチでは XML をほとんど使用していません。XML レイアウトを使用せずに、コードからいくつかの属性を使用して実際の新しいボタンを作成しています。それも結構です。

とにかく、XML レイアウト/ボタンを使用する場合は、Android のインフレータを使用する必要があります: http://developer.android.com/reference/android/view/LayoutInflater.html

それは次のようになります。

LayoutInflater inflater = (LayoutInflater)context.getSystemService
      (Context.LAYOUT_INFLATER_SERVICE);
Button mButton = (Button) inflater.inflate(R.layout.button, null);

これで、ボタン レイアウトから拡張されたコード内のボタンができました。これを特定のビューに複数回追加する場合は、後で認識できるように、各ボタンに異なるタグまたは ID を手動で設定することをお勧めします。

于 2013-10-01T07:29:30.257 に答える
3

このコードを使用してlayotからxmlレイアウトを取得できます

Button button=(Button)LayoutInflater.from(MainActivity.this).inflate(R.layout.buttonlayout, null);

そして好きなように使ってください。

于 2013-10-01T07:35:35.937 に答える
0

同じアクティビティでは、各 XML ビューは単一のビューに接続する必要がありますが、何十億ものボタンを膨らませることができます:)

final Button button = new Button(this);

        button.setText(day);
        final String whichDay = day;
        layout = (RelativeLayout) findViewById(R.id.newProgActivity);
        param = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        param.addRule(RelativeLayout.BELOW, activityTitle.getId());
        param.setMargins(0, margins, 0, 0);
        layout.addView(button, param);

を使用して、それらを互いの下に設定できるようになりました

button.setId()

そして、子ボタンはそのIDの下のルールを取得します..またはそれらをxmlの単一のビューに固定して使用しますsetmargins()

于 2013-10-01T07:33:52.090 に答える