6

ToggleButtonのオンとオフの状態のテキスト位置を制御する方法はありますか?たとえば、テキストラベルをオンの場合は左揃えにし、オフの場合は右揃えにします。

編集:また、左右のテキストに少しパディングを含めたいと思います。約5dp。可能であれば、ラベルの配置をより細かく制御できます。

答え:これが私が必要としていたものです!

button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
button.setPadding(0, 0, 5, 0);
4

5 に答える 5

7
  
public class StackActivity extends Activity implements OnCheckedChangeListener {

    private ToggleButton tb;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tb = (ToggleButton)findViewById(R.id.toggleButton1);
        tb.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    {
        if(isChecked)
        {
            tb.setGravity(Gravity.LEFT);
            tb.setPadding(5,0,0,0);    // Set left padding 
        } else
        {
            tb.setGravity(Gravity.RIGHT);
            tb.setPadding(0,0,5,0);    // Set right padding
        }
    }
}
于 2011-07-26T09:00:00.257 に答える
2
ToggleButton b1 = (ToggleButton) findViewById(R.id.button1);
        if(b1.isChecked()){
            b1.setGravity(Gravity.RIGHT);
        }
        else{
            b1.setGravity(Gravity.LEFT);
        }

ボタンが最小サイズでない場合 (ラベルのテキストより大きくなければならない)、変更が表示されないことに注意してください。

于 2011-07-26T08:54:47.850 に答える
1

これが私が必要としていたものです!

button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
button.setPadding(0, 0, 5, 0);
于 2011-07-28T19:55:14.343 に答える
1

ToggleButton は TextView のサブクラスなので、使用してみてくださいandroid:gravity="left"

http://developer.android.com/reference/android/widget/TextView.html#attr_android:gravityを優先してください。

于 2011-07-26T08:52:38.920 に答える
1

次のように OnClickListener にコードを追加して、ボタンがクリックされるたびに重力を変更して配置を変更します。

toggleButton.setOnClickListener(new OnClickListener() 
        {
            public void onClick(View v) {
               if (((ToggleButton)v).isChecked())
                    toggleButton.setGravity(Gravity.LEFT);
               else
                   toggleButton.setGravity(Gravity.RIGHT);
            }
        });
于 2011-07-26T09:08:55.287 に答える