0

プログラムでボタンオブジェクトに左マージンを設定する必要があります。これはコードセグメントです:

RelativeLayout rl = (RelativeLayout) findViewById(R.id.for_button);
MarginLayoutParams ml = new MarginLayoutParams(-2,-2);
ml.setMargins(5, 0, 0, 0);

Button btn = new Button(this);
btn.setText("7");
btn.setTextColor(Color.WHITE);
btn.setBackgroundResource(R.drawable.date_button);

rl.addView(btn,ml)

私も試しました

btn.setLayoutParams(ml);
rl.addView(btn);

大きな問題は何ですか。または、別の方法はありますか?

4

2 に答える 2

3

了解しました。これにIronBlossomを試してみます。これが私がそれを行う方法であり、それが機能することを願っています:

LinearLayout myLinearLayout = (LinearLayout)findViewById(R.id.my_linear_layout);
Button myButton = new Button(this);
// more myButton attribute setting here like text etc //

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
params.setMargins(5,0,0,0);
myLinearLayout.addView(myButton, params);

一番、

-セルカン

于 2011-11-29T15:21:32.983 に答える
1

ボタンの親としてRelativeLayoutを使用しますが、ボタンを配置する場所(ALIGN_PARENT_LEFTおよびALIGN_PARENT_TOPのルールは指定しません。

ただし、RelativeLayoutを使用する場合は位置のルールを設定する必要があるため、レイアウトの計算が混乱しますこれは、前者がこれらのルールを許可し、適切なデフォルト値が設定されているため、のRelativeLayout.LayoutParams代わりにを使用する必要があることを意味します。MarginLayoutParams

この行を変更します。

MarginLayoutParams ml = new MarginLayoutParams(-2,-2);

RelativeLayout.LayoutParams ml = new RelativeLayout.LayoutParams(-2,-2);

デフォルトの配置値が適切でないため、ルールも追加したい場合があります(ビューはデフォルトで親レイアウトの左上隅に配置されます)。あなたはそのために使うことができますRelativeLayout.LayoutParams.addRule()

于 2011-12-02T10:58:47.213 に答える