【问题标题】:Toggle button using two image on different state使用不同状态的两个图像切换按钮
【发布时间】:2012-07-15 00:30:35
【问题描述】:

我需要使用两个图像而不是 ON/OFF 状态来制作一个切换按钮。

在关闭状态下,我设置了背景图像。但是当我使用背景图像时,无法删除关闭文本。

我无法通过单击切换按钮将另一个图像设置为 ON 状态 :( 我是安卓新手。 希望大家帮我解决这个问题

【问题讨论】:

标签: android togglebutton


【解决方案1】:

这样做:

<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"/>

在drawable文件夹中创建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>

【讨论】:

  • 在 check.xml 中添加两个图像(选择/未选择),这将作为切换按钮的两种不同状态
  • 背景被拉伸是否有问题?
  • android:textOn="" android:textOff="" 是我想要的
  • 因为看起来其他人也有这个问题,所以我在这里添加我的解决方案。添加android:background="@null"android:drawableRight="@drawable/check"。通常我发现切换按钮是右对齐的。如果您需要左对齐,请使用android:drawableLeft
  • @Patrick 但是,如果您希望它居中对齐怎么办?...在​​所有设备上。所以我们不要讨论边距和填充。
【解决方案2】:

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>

【讨论】:

  • ToggleButton 有父 CompoundButton。 CompoundButton 具有 android:button 属性:developer.android.com/reference/android/…
  • 这应该是正确的答案。接受的答案导致拉伸的drawable。
  • 如果图片有透明度,可以使用android:background="@android:color/transparent"
  • @Bamerza,不,这也不适用于所有情况。如果你用 .svg 试试,你会得到拉伸的背景。
【解决方案3】:

你可以试试这样的。 在这里单击图像按钮,我切换图像视图。

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;
            }
        }
    });

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多