2015-02-16 2 views
1

Мне нужна кнопка переключения, чтобы иметь изображение и цвет фона. В настоящее время моя кнопка переключения имеет только изображение и цвет фона. Вот код для этогоКнопка Toggle, действующая как кнопка изображения

<ToggleButton 
android:id="@+id/button3" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:scaleType="centerCrop" 
android:layout_weight="1.0" 
android:layout_margin="5dp" 
android:onClick="onToggleClicked" 
android:textSize="0sp" 
android:checked="false" 
android:background="@drawable/soundfocuslone1"/> 


<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_checked="true"> 
<bitmap android:src="@drawable/soundonlone1" 
android:gravity="center"/> 
</item> 
<item android:state_pressed="true"> 
<bitmap android:src="@drawable/soundfocuslone1" 
android:gravity="center" /> 
</item> 
<item android:state_checked="false"> 
<bitmap android:src="@drawable/soundofflone1"/> 
</item> 
</selector> 

Возможно ли иметь два фона на кнопке переключения? Мне нужен цвет фона, а также изображение на нем. Если нет, есть ли простой способ заставить кнопку изображения вести себя как кнопка переключения? Возможно, что кнопка изображения, действующая как кнопка переключения, будет проще, так как изображение не масштабируется на кнопке переключения. Спасибо, и я был бы признателен за все ответы.

ответ

0

На самом деле ToggleButton имеет атрибут «android: button». Таким образом, вы можете использовать атрибут «android: button» для селектора и «android: background» для того, чтобы дать цвет фона ToggleButton. Но используя кнопку переключения, мы можем получить проблему гравитации, чтобы вы могли использовать флажок вместо кнопки переключения.

<CheckBox 
android:id="@+id/button3" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:scaleType="centerCrop" 
android:layout_weight="1.0" 
android:layout_margin="5dp" 
android:onClick="onToggleClicked" 
android:textSize="0sp" 
android:checked="false" 
android:padding="5dp" 
android:button="@drawable/soundfocuslone1" 
android:background="ur_background_color_code or drawable"/> 
+0

Спасибо, что решает мою проблему фона, однако изображение с андроида: кнопка не центрирована. Как я могу масштабировать и центрировать его? – throwaway123

+0

Вы можете использовать флажок вместо кнопки переключения для решения этой проблемы – Ramesh

0

Прежде всего вы пишете в файл XML:

<ToggleButton 
         android:id="@+id/tgTextReader" 
         android:layout_width="60dp" 
         android:layout_height="36dp" 
         android:background="@drawable/bw_toggle_on_selector" 
         android:focusable="false" 
         android:focusableInTouchMode="false" 
         android:textOff="" 
         android:textOn="" /> 

затем создать папку внутри Реза/
вытяжки папки записи имя XML-файл bw_toggle_on_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- When selected, use grey --> 
    <item android:drawable="@drawable/a" 
      android:state_checked="true" /> 
    <!-- When not selected, use white--> 
    <item android:drawable="@drawable/b" 
     android:state_checked="false"/> 

</selector> 

этого файл держите в привлекательном foloder. , а также создать новую папку внутри res/
drawable-nodpi где два изображения хранятся там. таких как изображение a, изображение b. прыжки успешно работают. Спасибо

+0

, где изображение а и б изображения ширина и высота должны быть одинаковыми. –

+0

У меня уже есть это в моем коде, но спасибо за ответ – throwaway123

1

, если вы не хотите, чтобы изображение, которое будет расположено в центре, используйте это для придания фона.

. поместите это в свою кнопку переключения - андроид: background = "@ drawable/bw_toggle_on_selector"

. создать XML в вытяжке папку с именем «bw_toggle_on_selector» и вставьте код, приведенный ниже в it-

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="rectangle" > 
<corners 
android:radius="14dp" 
/> 
<gradient 
android:angle="45" 
android:centerX="35%" 
android:centerColor="#7995A8" 
android:startColor="#E8E8E8" 
android:endColor="#000000" 
android:type="linear" 
/> 
<padding 
android:left="0dp" 
android:top="0dp" 
android:right="0dp" 
android:bottom="0dp" 
/> 
<size 
android:width="270dp" 
android:height="60dp" 
/> 
<stroke 
android:width="3dp" 
android:color="#878787" 
/> 
</shape> 

.use андроида: drawableLeft для установки фонового изображения.

и если вы хотите поместить изображение в центр, используйте этот код (он охватывает все, включая фоновое изображение).

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item 
    android:state_pressed="true"> 
    <layer-list> 
     <item> 
      <bitmap 
       android:gravity="center" 
       android:src="@drawable/ic_stop" 
       /> 
     </item> 
     <item> 
      <shape> 
       <gradient 
        android:angle="270" 
        android:endColor="#a0e0b071" 
        android:startColor="#a0a67637" /> 
       <stroke 
        android:width="1dp" 
        android:color="#5c3708" /> 
       <corners 
        android:radius="5dp" /> 
       <padding 
        android:bottom="10dp" 
        android:left="10dp" 
        android:right="10dp" 
        android:top="10dp" /> 
      </shape> 
     </item> 
    </layer-list> 
</item> 

<item 
    android:state_enabled="true"> 
    <layer-list> 
     <item> 
      <bitmap 
       android:gravity="center" 
       android:src="@drawable/ic_back" 
       /> 
     </item> 
     <item> 
      <shape 
       android:shape="rectangle"> 
       <gradient 
        android:angle="270" 
        android:endColor="#a0a67637" 
        android:startColor="#a0e0b071" /> 
       <stroke 
        android:width="1dp" 
        android:color="#5c3708" /> 
       <corners 
        android:radius="5dp" /> 
       <padding 
        android:bottom="10dp" 
        android:left="10dp" 
        android:right="10dp" 
        android:top="10dp" /> 
      </shape> 
     </item> 
    </layer-list> 
</item> 


</selector> 

** Некоторые советы **

* Изменение Текст кнопки OnClick

. создайте XML-файл в папке Drawable с именем «text_color».XML»

вставьте следующий код в IT-

<selector 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
android:state_pressed="true" 
android:color="#000000" /> 
<item 
android:state_pressed="false" 
android:color="#01DFD7" /> 
</selector> 

поместить это в кнопке, чтобы определить XML андроида:. TextColor = "@ Drawable/text_color"

* Более быстрый способ изменения размера моих изображений?

this tool или студия Android для Android (google it)

* Как создать пользовательский фон для моих кнопок?

попробовать this online tool :)

Смежные вопросы