ToggleButton Размещение текстовой метки для состояния включения и выключения - PullRequest
6 голосов
/ 26 июля 2011

Есть ли способ контролировать положение текста для состояния включения и выключения ToggleButton?Например, я хочу, чтобы текстовая метка была выровнена по левому краю, когда включена, и по правому краю, когда выключена.

РЕДАКТИРОВАТЬ: Кроме того, я бы добавил небольшой отступ для текста слева и справа.Около 5дп.и, если возможно, лучше контролировать размещение меток.

ОТВЕТ: Это то, что мне нужно!

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

Ответы [ 5 ]

7 голосов
/ 26 июля 2011
  
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
        }
    }
}
2 голосов
/ 26 июля 2011
ToggleButton b1 = (ToggleButton) findViewById(R.id.button1);
        if(b1.isChecked()){
            b1.setGravity(Gravity.RIGHT);
        }
        else{
            b1.setGravity(Gravity.LEFT);
        }

Обратите внимание, что вы не увидите никаких изменений, если кнопка не имеет минимальный размер (должен быть больше, чем текст на ярлыке).

1 голос
/ 28 июля 2011

Это то, что мне нужно!

button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
button.setPadding(0, 0, 5, 0);
1 голос
/ 26 июля 2011

Изменение выравнивания путем изменения силы тяжести при каждом нажатии кнопки путем добавления некоторого кода в OnClickListener, например, так:

toggleButton.setOnClickListener(new OnClickListener() 
        {
            public void onClick(View v) {
               if (((ToggleButton)v).isChecked())
                    toggleButton.setGravity(Gravity.LEFT);
               else
                   toggleButton.setGravity(Gravity.RIGHT);
            }
        });
1 голос
/ 26 июля 2011

Поскольку ToggleButton является подклассом TextView, попробуйте использовать android:gravity="left".

. Пожалуйста, выберите http://developer.android.com/reference/android/widget/TextView.html#attr_android:gravity.

...