Подтвердить что ты не робот

Можно создать ToggleButton без текста?

Я хочу создать андроид по умолчанию ToggleButton следующим образом: enter image description here

но я хочу создать его без ТЕКСТ

Я пробовал этот код:

ToggleButton tb = new ToggleButton(map);
tb.setText(null);
tb.setTextOn(null);
tb.setTextOff(null);

Но он оставляет пустое место в верхней части горизонтальной зеленой полосы.

Я не хочу этого пустого пространства, я хочу только горизонтальную зеленую полосу.

Как это сделать?

спасибо

4b9b3361

Ответ 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"

/>