Как установить ширину ToggleButton для более широких значений textOn и textOff? - PullRequest
2 голосов
/ 04 января 2012

A ToggleButton виджет изменяет размер при переключении проверенного состояния.Например, если значение textOn равно «true», а значение textOff «не уверен, позвоните мне позже», переключение проверенного состояния вызывает резкое изменение ширины кнопки.

Было бы неплохоустановить ширину ToggleButton равной максимуму двух значений ширины с содержимым, созданных textOn и textOff.

Есть ли предпочтительный способ поддержания постоянной ширины ToggleButton?Является ли лучший способ просто позвонить getWidth(), затем toggle(), затем getWidth() снова?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2013

Мне нужно было это для моей кнопки переключения и немного ее улучшило. Я удалил настройки макета и включил отступы. Если вы не примете во внимание отступы, ваша строка будет заключена в кнопку.

    ToggleButton tglBtn = (ToggleButton) view.findViewById(R.id.toggleBtn);
    tglBtn.setWidth((int) tglBtn.getPaint().measureText("Longest String")+tglBtn.getPaddingLeft()+tglBtn.getPaddingRight());
2 голосов
/ 04 января 2012

Поскольку это кнопка с двумя строками, нет ничего плохого в том, чтобы указывать ширину в самом XML в соответствии с большей строкой.

Но если вы хотите вычислить ширину строк, это просто:

Paint paint = toggleButton.getPaint();
float length = paint.measureText(YOUR_STRING);

Это дает вам ширину строки, которая будет отображаться на экране.Теперь установите ширину кнопки переключения с помощью LayoutParams.

Допустим, родительский макет вашей кнопки переключения - LinearLayout.
, поэтому она должна выглядеть следующим образом:
toggleButton.setLayoutParams (newLayoutParams (WIDTH_YOU_CALCULATED, LinearLayout.LayoutParams.WRAP_CONTENT));

Это установит ширину и высоту вашей кнопки ToggleButton в соответствии с тем, что вы рассчитали.

...