다른 상태에서 두 개의 이미지를 사용하는 전환 버튼


101

ON / OFF 상태 대신 두 개의 이미지를 사용하여 토글 버튼을 만들어야합니다.

꺼짐 상태에서 배경 이미지를 설정했지만 배경 이미지를 사용하는 동안 OFF 텍스트를 제거 할 수 없습니다.

그리고 나는 토글 버튼을 클릭하여 ON 상태에 다른 이미지를 설정할 수 없습니다 :( 나는 안드로이드가 처음입니다.이 문제에서 벗어나는 데 도움이되기를 바랍니다.


답변:


219

이 작업을 수행:

<ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   <!--check.xml-->
        android:layout_margin="10dp"
        android:textOn=""
        android:textOff=""
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_centerVertical="true"/>

드로어 블 폴더에 check.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/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>

1
토글 버튼의 두 가지 상태로 작동 할 check.xml에 두 개의 이미지를 (선택 / 선택 해제) 추가
AkashG

19
배경이 늘어나는 데 문제가 있습니까?
Mike Bevz 2013

2
android : textOn = ""android : textOff = ""는 내가 찾던 것입니다.
png

9
다른 사람들에게도이 문제가있는 것 같으므로 여기에 내 솔루션을 추가하고 있습니다. 추가 android:background="@null"android:drawableRight="@drawable/check". 일반적으로 토글 버튼이 오른쪽 정렬되어 있음을 발견했습니다. 왼쪽 맞춤이 필요한 경우android:drawableLeft
Patrick

1
@Patrick하지만 센터를 정당화하려면 어떻게해야합니까? ... 모든 장치에서. 따라서 여백과 패딩에 대해 알아보지 마십시오.
Martin Erlic 2015

47

AkashG의 솔루션은 나를 위해 작동하지 않습니다. check.xml을 배경으로 설정하면 세로 방향으로 늘어납니다. 이 문제를 해결하려면 check.xml을 "android : button"속성으로 설정해야합니다.

<ToggleButton 
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/check"   //check.xml
    android:background="@null"/>

check.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/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
          android:state_checked="false"/>
    </selector>

10
ToggleButton에는 부모 CompoundButton이 있습니다. 버튼 속성 : 그리고 CompoundButton 안드로이드를 가지고 developer.android.com/reference/android/...
MistaGreen

3
정답이되어야합니다. 허용되는 답변은 드로어 블이 늘어납니다.
Bamerza

이미지가 투명하면 android:background="@android:color/transparent"사용할 수 있습니다
Pavel

@Bamerza, 아니 이것은 모든 경우에도 적용되지 않습니다. .svg로 시도하면 배경이 늘어납니다.
Farid

2

이런 식으로 시도해 볼 수 있습니다. 여기에서 이미지 버튼을 클릭하면 이미지보기를 토글합니다.

holder.imgitem.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            if(!onclick){
            mSparseBooleanArray.put((Integer) view.getTag(), true);
            holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_delete_overlay_com);
            onclick=true;}
            else if(onclick)
            {
                 mSparseBooleanArray.put((Integer) view.getTag(), false);
                  holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_selection_com);

            onclick=false;
            }
        }
    });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.