当前位置: 首页 > 面试题库 >

Android:使用XML为切换按钮指定两个不同的图像

仲孙经赋
2023-03-14
问题内容

我正在尝试覆盖默认ToggleButton外观。这是定义的XML ToggleButton

<ToggleButton android:id="@+id/FollowAndCenterButton"
        android:layout_width="30px"
        android:layout_height="30px"
        android:textOn="" android:textOff="" android:layout_alignParentLeft="true"
        android:layout_marginLeft="5px"
        android:layout_marginTop="5px" android:background="@drawable/locate_me"/>

现在,我们有两个要用于单击/未单击状态的30 x 30图标。现在,我们有一些代码,可以根据状态以编程方式更改背景图标:

centeredOnLocation.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (centeredOnLocation.isChecked()) {
                centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on));
            } else {
                centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me));
            }
        }
});

显然,我正在寻找一种更好的方法来做到这一点。我试图为背景图片创建一个选择器,该选择器将在状态之间自动切换:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/locate_me" /> <!-- default -->
 <item android:state_checked="true"
       android:drawable="@drawable/locate_me_on" /> <!-- pressed -->
 <item android:state_checked="false"
       android:drawable="@drawable/locate_me" /> <!-- unchecked -->

但这是行不通的。阅读ToggleButtonAPI(http://developer.android.com/reference/android/widget/ToggleButton.html),看来唯一继承的xml属性是

    XML Attributes
Attribute Name  Related Method  Description
android:disabledAlpha       The alpha to apply to the indicator when disabled. 
android:textOff         The text for the button when it is not checked. 
android:textOn      The text for the button when it is checked.

尽管该类具有方法isChecked()和,但似乎没有android:state_checked属性setChecked()

因此,有没有办法在XML中做我想做的事情,还是我陷入混乱的解决方法中?


问题答案:

您的代码很好。但是,切换按钮将在选择器中显示与之匹配的第一项,因此默认项应排在最后。以下列方式安排项目,以确保将它们全部利用:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_pressed="true" /> //currently pressed turning the toggle on
    <item android:state_pressed="true" /> //currently pressed turning the toggle off
    <item android:state_checked="true" /> //not pressed default checked state
    <item /> //default non-pressed non-checked
</selector>


 类似资料:
  • 问题内容: 我有两个不同的matplotlib图,我想在按下按钮时进行切换。当按下按钮时,我拥有的代码会将第二张图添加到第一张图的下面,但是我希望它替换第一张图。这是一个有点类似的stackoverflow问题(如何更新嵌入到tkinter中的matplotlib?),但我似乎无法将其应用于我的情况。 我编写的图形graph_one和graph_two是我从matplotlib文档中提取的两个简单

  • 我能找到的每个更改按钮图像的示例都显示了当单击该按钮时如何更改它。但是我如何点击一个切换按钮,并让它改变一个常规按钮的图像呢? 关于更多细节,我有两个按钮和一个onCheckedChanged事件: 当按下切换按钮并发生onCheckedChanged事件时,我需要将btn1的背景设置为新图像。

  • 问题内容: 应用程序可以在四种不同的设备上正常运行。但是客户端在 Xperia z2 上的闪光按钮ON / OFF上面临崩溃。 主要活动 相机预览 崩溃报告。 问题答案: 应muku的要求。我自己回答。用于切换闪光灯 FlashOn和FlashOff方法是

  • 我正在使用RecycerView构建一个切换按钮列表(如numpad),我希望实现: 当用户通过单击某个按钮“打开”该按钮时,将“关闭”所有其他按钮 我尝试在视图holder类中添加,并调用,这样就可以调用,然后更改按钮的状态。 维埃霍尔德 我的adpater类中的onBindViewHolder()

  • 主要内容:创建切换按钮,切换按钮组,ToggleButton行为,样式切换按钮切换按钮具有两种状态:选择或未选择。 我们通常将两个或多个切换按钮组合成一个组,并允许用户只选择一个按钮或不选择。 创建切换按钮 我们可以使用类的三个构造函数创建一个切换按钮。要创建没有任何字幕或图标的切换按钮。 要创建带有文字说明的切换按钮 要创建带有文字说明和图标的切换按钮。 方法可以将文本设置为,以及方法可以将图像安装到。 切换按钮组 切换组不强制选择至少一个按钮。单击所选的切换按钮可取消选

  • 我正在使用iSpeech的API用于TTS,在他们的示例android项目中,他们有两个带有两个OnClickListener的按钮,一个用于开始演讲,一个用于停止演讲。我想把它保持在一个按钮上,以便在android屏幕上有更多的空间,这样,如果语音停止,按下按钮就会开始,如果语音开始,按下按钮就会停止。 有很多类似的问题,答案表明最好保持一个监听器一个按钮,但我不太满意,因为这个问题是在多个监听