Android:如何使用可绘制聚焦状态的按下状态绘制ImageButton

Android:如何使用可绘制聚焦状态的按下状态绘制ImageButton,android,button,background,Android,Button,Background,我试图实现这样一种效果:按下后,一个ImageButton以按下的橙色背景绘制图像,直到它失去焦点,然后触摸其他对象 StateListDrawable似乎适用于这种情况,因为它允许我定义如何为聚焦状态绘制背景。如果我能简单地定义,背景应该是用按下的drawable绘制的,对于聚焦状态,那将是非常棒的。但是,我看不出有任何方法可以引用默认的可绘制 关于如何达到这个效果,有什么建议吗?如果我理解你的问题,也许可以帮助你 我做同样的任务定义一个xml背景选择器,它包含每个状态的可绘制内容,这个文件更

我试图实现这样一种效果:按下后,一个ImageButton以按下的橙色背景绘制图像,直到它失去焦点,然后触摸其他对象

StateListDrawable似乎适用于这种情况,因为它允许我定义如何为聚焦状态绘制背景。如果我能简单地定义,背景应该是用按下的drawable绘制的,对于聚焦状态,那将是非常棒的。但是,我看不出有任何方法可以引用默认的可绘制


关于如何达到这个效果,有什么建议吗?

如果我理解你的问题,也许可以帮助你

我做同样的任务定义一个xml背景选择器,它包含每个状态的可绘制内容,这个文件更广泛,因为您可以定义可绘制内容、形状等。。。最重要的功能是,你可以设置任何绘图或形状你想要

这里我定义了我的背景选择器。。。我称之为selector.xml并保存到drawable文件夹中

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:drawable="@drawable/shape_7"/>
        <item android:state_pressed="true" android:drawable="@drawable/shape_7" />
        <item android:state_pressed="false" android:drawable="@drawable/shape_6" />
    </selector>
还是xml方式

<ImageView
    android:background="@drawable/selector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="4px"
    android:src="@drawable/switch_icon"/>

干杯

如果我理解你的问题,也许可以帮助你

我做同样的任务定义一个xml背景选择器,它包含每个状态的可绘制内容,这个文件更广泛,因为您可以定义可绘制内容、形状等。。。最重要的功能是,你可以设置任何绘图或形状你想要

这里我定义了我的背景选择器。。。我称之为selector.xml并保存到drawable文件夹中

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:drawable="@drawable/shape_7"/>
        <item android:state_pressed="true" android:drawable="@drawable/shape_7" />
        <item android:state_pressed="false" android:drawable="@drawable/shape_6" />
    </selector>
还是xml方式

<ImageView
    android:background="@drawable/selector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="4px"
    android:src="@drawable/switch_icon"/>

干杯

查看android SDK中的drawables文件夹。默认情况下,您可以找到它使用的所有九个修补程序图像。你想要的可能被称为btn_pressed、btn_focused等或类似的东西。从技术上讲,您可以在项目中通过id引用它们,但我认为建议您将它们复制到您的项目中,因为这些id并不是固定不变的。

查看android SDK中的drawables文件夹。默认情况下,您可以找到它使用的所有九个修补程序图像。你想要的可能被称为btn_pressed、btn_focused等或类似的东西。从技术上讲,你可以在你的项目中通过id引用它们,但我认为建议你将它们复制到你的项目中,因为id不会被夸耀为保持不变。

这是我在我的应用程序的全息暗主题中所做的,但它没有我想要的圆边

res/drawable/image\u button\u background.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/holo_blue_dark" android:state_pressed="true"/>
</selector>

这就是我在应用程序的全息暗主题中的工作原理,但它没有我想要的圆形边缘

res/drawable/image\u button\u background.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/holo_blue_dark" android:state_pressed="true"/>
</selector>

这是有帮助的,但是,可能主要的问题是,我希望选择和按下,并集中绘图是安卓默认。是否定义了shape_7和shape_6,以便它们使用默认的android drawalbes?当我说默认android drawables时,我指的是那些在没有设置自定义背景的情况下使用的drawables。这很有帮助,但是,可能主要的问题是,我希望选中的、按下的和聚焦的drawables是android默认的。是否定义了shape_7和shape_6,以便它们使用默认的android drawalbes?当我说默认android drawables时,我指的是那些在未设置自定义背景时使用的drawables谢谢。我把这个标记为已回答,因为它确实回答了我的问题,但实际上并没有解决我的问题。问题是imagebutton在触摸的向上事件上失去焦点。我想让imagebutton保持焦点,直到其他东西抓住它,这样它就可以像聚焦一样绘制,直到其他东西被触摸为止。有什么建议吗?请尝试在onClickListener的onClickView v方法中调用yourButton.requestFocus以获取该按钮。@ab11将按钮设置为在触摸模式下可聚焦android:focusableInTouchMode=True谢谢。我把这个标记为已回答,因为它确实回答了我的问题,但实际上并没有解决我的问题。问题是imagebutton在触摸的向上事件上失去焦点。我想让imagebutton保持焦点,直到其他东西抓住它,这样它就可以像聚焦一样绘制,直到其他东西被触摸为止。对此有什么建议吗?请尝试在onClickListener的onClickView v方法中调用yourButton.requestFocus以获取按钮。@ab11将按钮设置为在触摸模式下可聚焦android:focusableInTouchMode=true