Можно создать ToggleButton без текста?
Я хочу создать андроид по умолчанию ToggleButton
следующим образом: ![enter image description here]()
но я хочу создать его без ТЕКСТ
Я пробовал этот код:
ToggleButton tb = new ToggleButton(map);
tb.setText(null);
tb.setTextOn(null);
tb.setTextOff(null);
Но он оставляет пустое место в верхней части горизонтальной зеленой полосы.
Я не хочу этого пустого пространства, я хочу только горизонтальную зеленую полосу.
Как это сделать?
спасибо
Ответы
Ответ 1
Пустое пространство в верхней части вызвано 2 Ninepatch (btn_toggle_off.9.png
и btn_toggle_on.9.png
), используемым по умолчанию для стиля toggleButton.
Чтобы идеально сосредоточиться на горизонтальной полосе, вы должны создать новый стиль для ToggleButton, который будет использовать две новые оригинальные формы с девятью патчами.
Изменить:
Метод, требующий минимального XML:
-
создайте свои два девяти патча для вашего переключателя, назовите его: my_btn_toggle
_on и my_btn_toggle_off
-
в папке с рисунком, создайте 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)
Ответ 2
Просто установите следующие вещи:
<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>
Надеюсь, что это поможет ~
Ответ 3
Используя
<ToggleButton
...
android:textOff="@null"
android:textOn="@null"
android:textSize="0dp" />
не только уберет текст, но и избавится от пустого пространства, в котором он был бы показан.
Ответ 4
Не самое элегантное решение, но вы можете попробовать tb.setTextSize(0);
, если вы просто пытаетесь скрыть лишнее пространство сверху. Может потребоваться установить textOn/textOff в пустую строку: tb.setTextOn("");
EDIT: лучше всего создать собственную пользовательскую кнопку extend
ing Button
, удерживать состояние (см. это сообщение SO для нажатых/не нажатых состояний: Нажмите состояние андроидной кнопки) и найдите активы для установки в качестве соответствующего состояния...
Ответ 5
<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" />
Ответ 6
Я так и думал
android:textColor="@android:color/transparent"
Ответ 7
Это намного проще использовать CheckBox
вместо ToggleButton
. Они имеют одинаковые состояния и, таким образом, обеспечивают ту же функциональность, но вы можете легко изменить появление CheckBox
, указав его атрибут <android:button="@drawable/...">
.
Ответ 8
<ToggleButton
android:id="@+id/tooglebutton"
android:layout_width="60dp"
android:layout_height="25dp"
android:textOff="off"
android:textOn="on"
android:textSize="0dp"
/>
Ответ 9
Заполните стиль 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"
/>