Можно ли создать ToggleButton без текста?
Я хочу создать Android по умолчанию ToggleButton
такой:
но я хочу создать его без текста
Я пробовал с этим кодом:
ToggleButton tb = new ToggleButton(map);
tb.setText(null);
tb.setTextOn(null);
tb.setTextOff(null);
но он оставляет пустое пространство в верхней части горизонтальная зеленая полоса.
Я не хочу, чтобы это пустое пространство, я хочу только горизонтальную зеленую полосу.
как этого добиться?
спасибо
9 ответов
пустое пространство в верхней части вызвано 2 Ninepatch (btn_toggle_off.9.png
и btn_toggle_on.9.png
) используется в стиле toggleButton по умолчанию.
чтобы идеально центрировать горизонтальную полосу, Вы должны создать новый стиль для ToggleButton, который будет использовать два новых оригинала производной формы ninepatch.
изменить: Метод, требующий минимального XML:
создать ваши два ninepatches для вашего выключателя, назовите его:
my_btn_toggle
_on иmy_btn_toggle_off
-
in папка рисунков, создать
my_btn_toggle.xml
:<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@drawable/my_btn_toggle_off" /> <item android:state_checked="true" android:drawable="@drawable/my_btn_toggle_on" /> </selector>
-
в вашем коде добавьте
tb.setBackgroundResource(R.drawable.my_btn_toggle)
:ToggleButton tb = new ToggleButton(map); tb.setText(null); tb.setTextOn(null); tb.setTextOff(null); tb.setBackgroundResource(R.drawable.my_btn_toggle)
просто установите следующие вещи:
<ToggleButton android:id="@+id/tbtn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_check"
android:textOn=""
android:textOff=""
android:text="" />
и, стиль xml, если вам нужно...
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/bg_check_on" /> <!-- pressed -->
<item android:drawable="@drawable/bg_check_off" /> <!-- default/unchecked -->
</selector>
надеюсь, это поможет~
С помощью
<ToggleButton
...
android:textOff="@null"
android:textOn="@null"
android:textSize="0dp" />
не только заставит текст уйти, но и избавится от пустого пространства, где он в противном случае будет показан.
не самое элегантное решение, но вы могли бы попробовать tb.setTextSize(0);
Если вы просто пытаетесь скрыть дополнительное пространство сверху. Может потребоваться установить textOn / textOff в пустую строку:tb.setTextOn("");
EDIT: я лучше вариант будет создать свой собственный кнопку по extend
ing Button
, удерживайте состояние (см. Это сообщение SO для нажатых / непрессованных состояний:нажата кнопка Android состояние) и найти активы для установки в качестве соответствующего состояния...
<ToggleButton
android:id="@+id/setting_tb"
style="@style/style_setting_tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:checked="true"
android:gravity="center"
android:minHeight="0dp"
android:minWidth="0dp"
android:textColor="@color/White"
android:textOff=""
android:textOn=""
android:textSize="14sp" />
это гораздо более беспроблемно использовать CheckBox
вместо ToggleButton
. Они имеют одинаковые состояния и, таким образом, достигают одинаковой функциональности, но вы можете легко изменить CheckBox
appearence, определив его .
<ToggleButton
android:id="@+id/tooglebutton"
android:layout_width="60dp"
android:layout_height="25dp"
android:textOff="off"
android:textOn="on"
android:textSize="0dp"
/>
заполнить стиль XML, как это.. магия-это цвет текста как прозрачный...
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textOff="blabla"
android:textOn="blablabla"
android:textColor="@android:color/transparent"
android:background="@drawable/boutmediumrouge"
/>