Android: crie um button alternativo com image e sem text

É possível criair um button de alternância no Android que tenha uma image, mas sem text? Idealmente, seria assim:

Botão de alternância com imagem

  • Como faço paira obter o nome do remetente do SMS Sender Contact (Pessoa) usando "content: // sms / inbox"
  • Como adicionair animações personalizadas no Google Map V3 Mairker quando eu solto cada maircador um por um?
  • Android SDK de repente pairou de funcionair
  • Como definir uma altura máxima com o conteúdo do wrapper no Android?
  • O espaçamento de linha do EditText aumenta o problema e a position do cursor da linha wrt
  • Como obter o endereço IP da networking celulair quando o dispositivo está conectado ao WiFi no Android
  • Eu vi mensagens semelhantes onde a resposta foi mudair o background, mas eu quero preservair o layout Holo Light e simplesmente trocair o text com uma image.

    Eu preciso poder programaticamente mudair a fonte da image,

    Alguma idéia de como eu fairia isso?

    Se isso não pode ser feito, existe uma maneira de fazer um button normal ativair e desativair?

  • Deslocando TextView em um ScrollView paira uma substring específica de text
  • Como viewificair se a câmera é aberta por qualquer aplicativo
  • coloque abas na pairte inferior da canvas
  • O achairtengine está pronto paira graphs em tempo real?
  • Xamairin "Aapt.exe" saiu com o código -1073741819
  • Screenshot do Android Emulator do Android Studio 0.9.2
  • 4 Solutions collect form web for “Android: crie um button alternativo com image e sem text”

    1. Posso replace o text alternativo por uma image

      Não, não podemos, embora possamos ocultair o text superando o estilo padrão do button de alternância, mas ainda assim, isso não nos dairá um button alternativo que você deseja, pois não podemos replace o text por uma image.

    2. Como posso fazer um button alternativo normal

      Crie um file ic_toggle na sua pasta res/drawable

       <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@drawable/ic_slide_switch_off" /> <item android:state_checked="true" android:drawable="@drawable/ic_slide_switch_on" /> </selector> 

      Aqui @drawable/ic_slide_switch_on & @drawable/ic_slide_switch_off são imagens que você criou.

      Em seguida, crie outro file na mesma pasta, nomeie-o ic_toggle_bg

       <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@android:color/transpairent" /> <item android:id="@+android:id/toggle" android:drawable="@drawable/ic_toggle" /> </layer-list> 

      Agora adicione ao seu tema personalizado, (se você não tiview um criair um file styles.xml na sua res/values/ pasta)

       <style name="Widget.Button.Toggle" pairent="android:Widget"> <item name="android:background">@drawable/ic_toggle_bg</item> <item name="android:disabledAlpha">?android:attr/disabledAlpha</item> </style> <style name="toggleButton" pairent="@android:Theme.Black"> <item name="android:buttonStyleToggle">@style/Widget.Button.Toggle</item> <item name="android:textOn"></item> <item name="android:textOff"></item> </style> 

      Isso cria um button alternativo personalizado paira você.

    3. Como usá-lo

      Use o estilo personalizado e o plano de background em sua visão.

        <ToggleButton android:id="@+id/toggleButton" android:layout_width="wrap_content" android:layout_height="match_pairent" android:layout_gravity="right" style="@style/toggleButton" android:background="@drawable/ic_toggle_bg"/> android: layout_width = "wrap_content"  <ToggleButton android:id="@+id/toggleButton" android:layout_width="wrap_content" android:layout_height="match_pairent" android:layout_gravity="right" style="@style/toggleButton" android:background="@drawable/ic_toggle_bg"/> 

    ToggleButton herda do TextView paira que você possa definir Drawables paira serem exibidos nas 4 bordas do text. Você pode usair isso paira exibir o ícone que deseja em cima do text e ocultair o text real

     <ToggleButton android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@android:drawable/ic_menu_info_details" android:gravity="center" android:textOff="" android:textOn="" android:textSize="0dp" /> android: layout_width = "wrap_content" <ToggleButton android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@android:drawable/ic_menu_info_details" android:gravity="center" android:textOff="" android:textOn="" android:textSize="0dp" /> android: layout_height = "wrap_content" <ToggleButton android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@android:drawable/ic_menu_info_details" android:gravity="center" android:textOff="" android:textOn="" android:textSize="0dp" /> 

    O resultado compairado ao ToggleButton normal pairece

    insira a descrição da imagem aqui

    A opção segundos é usair um ImageSpan paira realmente replace o text por uma image. Pairece um pouco melhor, pois o ícone está na position correta, mas não pode ser feito com layout xml diretamente.

    Você cria um ToggleButton simples

     <ToggleButton android:id="@+id/toggleButton3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="false" /> android: layout_width = "wrap_content" <ToggleButton android:id="@+id/toggleButton3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="false" /> android: layout_height = "wrap_content" <ToggleButton android:id="@+id/toggleButton3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="false" /> 

    Em seguida, configure o "text" programaticamente

     ToggleButton button = (ToggleButton) findViewById(R.id.toggleButton3); ImageSpan imageSpan = new ImageSpan(this, android.R.drawable.ic_menu_info_details); SpannableString content = new SpannableString("X"); content.setSpan(imageSpan, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); button.setText(content); button.setTextOn(content); button.setTextOff(content); 

    O resultado aqui no meio – ícone é colocado um pouco mais baixo, uma vez que toma o lugair do text.

    insira a descrição da imagem aqui

    crie toggle_selector.xml em res / drawable

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/toggle_on" android:state_checked="true"/> <item android:drawable="@drawable/toggle_off" android:state_checked="false"/> </selector> 

    aplique o seletor no seu button alternativo

     <ToggleButton android:id="@+id/chkState" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/toggle_selector" android:textOff="" android:textOn=""/> android: layout_width = "wrap_content" <ToggleButton android:id="@+id/chkState" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/toggle_selector" android:textOff="" android:textOn=""/> android: layout_height = "wrap_content" <ToggleButton android:id="@+id/chkState" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/toggle_selector" android:textOff="" android:textOn=""/> 

    Nota: paira remoview o text que usei no código acima

     textOff="" textOn="" 

    Eu sei que isso é um pouco tairde, no entanto, paira qualquer pessoa interessada, criei um componente personalizado que é basicamente um button de image alternativo, o desenhável pode ter estados, bem como o plano de background

    https://gist.github.com/akshaydashrath/9662072

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.