0

TextView と ImageButton を線形レイアウト (水平) に持っています。私が持っている合計幅は 300 ピクセルです。ボタン画像は 50x50 です。テキストに使用できる最大幅は 250 です。以下のコードは、テキスト幅が 250 ピクセル未満の場合に完全に機能します (WRAP_CONTENT は適切に機能します)。

    // create relative layout for the entire view
    LinearLayout layout = new LinearLayout(this);
    layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    layout.setOrientation(LinearLayout.HORIZONTAL);

    // create TextView for the title
    TextView titleView = new TextView(this);
    titleView.setText(title);
    layout.addView(titleView);

    // add the button onto the view
    bubbleBtn = new ImageButton(this);
    bubbleBtn.setLayoutParams(new LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT));
    layout.addView(bubbleBtn);

テキストが 250 ピクセルを超えると問題が発生します。ボタンは押し出され、その 300 ピクセルのスペース内では見えなくなります。

私が欲しいのはこれです:画像に50ピクセルの幅を割り当てます。残りの 250 ピクセルの WRAP_CONTENT。つまり、左からではなく、右から埋める。このコンテキストで重力を使用するのは正しいことですか? コードのどこでどのように使用すればよいですか?

または、これを行う他のより良い方法はありますか?

4

1 に答える 1

1

LinearLayout の代わりに RelativeLayout を使用します。各ビューの LayoutParams を次のように設定します。

// add the button onto the view
bubbleBtn = new ImageButton(this);
bubbleBtn.setId(1); // should set this using a ids.xml resource really.
RelativeLayout.LayoutParams bbLP = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
bbLP.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
bbLP.addRule(RelativeLayout.CENTER_VERTICAL);
layout.addView(bubbleBtn, bbLP);

// create TextView for the title
TextView titleView = new TextView(this);
titleView.setText(title);
titleView.setGravity(Gravity.RIGHT);
RelativeLayout.LayoutParams tvLP = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
tvLP.addRule(RelativeLayout.LEFT_OF, 1);
tvLP.addRule(RelativeLayout.CENTER_VERTICAL);
layout.addView(titleView, tvLP);
于 2012-07-13T10:56:34.580 に答える