当前位置: 首页 > 知识库问答 >
问题:

Android更改按钮背景按下状态不带选择器

曾山
2023-03-14

解决方案见Deepa答案:)

我阅读了StackOverFlow中给出的所有解决方案,但在我的情况下似乎没有一个可行。问题是我的应用程序中有几个按钮,它们会对用户的操作做出不同的反应。例如,当应用程序启动时,除了两个按钮之外,所有按钮都被禁用。因此我将默认的drawable设置到XML中。当我打开一个文件时,所有这些都是可点击的,但其中一些,当按下时,需要保持按下(我已经这样做了),但其他的只是需要按下,然后取消按下,这是我不能做的。顺便说一下,所有的按钮都得到了不同的背景,这就是为什么我不使用选择器。以下是一些打印屏幕:

正如您所看到的,我管理默认状态和“checked状态”(按下表示“ever”),但我不能设置单击状态,即只按下按钮,然后当操作完成时返回未按下状态。因为我知道onClick是在触摸之后调用的,所以它不起作用。

共有1个答案

詹正浩
2023-03-14

试试这个..

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            //change the button for pressed state..              
            button.setBackgroundResource(R.drawable.pressed);
        }       
    }

    if(event.getAction()==MotionEvent.ACTION_UP) {
        //After pressing the button again change the image for button as 
        button.setBackgroundResource(R.drawable.normal);
    }
});

希望对你有帮助...

 类似资料:
  • 这肯定是个愚蠢的问题,因为stackoverflow中有很多相关的问题,也许答案很简单。但不管怎样,它在这里。我有一个按钮,并为它创建一个可绘制的xml。所以在我的按钮下面是代码: 现在,在我的drawable/button2下,我创建了一个选择器,其中我没有使用图像。下面是我的代码: 现在我要完成的是,当我单击该按钮时,它将其背景颜色改变为state_pressed所暗示的颜色,并且如果单击另一

  • 问题内容: 我有一个Java按钮,可打开JColorChooser对话框。我希望按钮的颜色根据对话框中选择的颜色进行更改。我曾尝试调用按钮的setBackgroundColor()方法,但对我而言没有任何效果(该按钮位于Winsows 7中的JToolBar上)。同样,此问题表明更改按钮的背景不是平台无关的。 也许此问题的答案不是首先使用按钮。因此,我的问题是:是否存在一种方法来显示Java中反映

  • 当我的按钮被按下时,我如何用xml更改文本和背景颜色? 要更改文本颜色,可以执行以下操作: 要更改背景,我可以做(在具有可绘制引用的选择器/项中使用它): 但我怎么能两样都做呢?假设我想要: 默认:黑色文本/白色背景 按下:白文/蓝底 我完全忘记了背景和文本颜色是分开管理的,所以我是这样做的: 在MyBackgroundColors.xml中,我管理背景,在FiltersButtonColors.

  • 我正在尝试制作一个调查应用程序,学习一些关于FragmentContainerView和导航图的知识。当我使用现有的小部件(如radiobuttons或checkboxes)来获取答案时,所有的工作都很完美。 当我尝试制作自己的小部件或更改一个普通按钮的行为以使其行为如以下屏幕截图所示时,问题就出现了: 该行为与ToggleButton类似,但我不想更改文本(开/关文本)。我需要的是,当我点击按钮

  • 本文向大家介绍使用CSS更改按钮的背景色,包括了使用CSS更改按钮的背景色的使用技巧和注意事项,需要的朋友参考一下 要更改按钮的背景色,请使用background-color属性。 您可以尝试运行以下代码来更改按钮的背景色 示例

  • 我已经创建了一个类,它扩展了。在该类中,当我按下一个按钮时,我想更改一个按钮的背景,该按钮被放置在主活动中。 我试图创建一个内部类来访问Main Active对象,但我得到的是这个错误: 尝试在空对象引用上调用虚拟方法android.content.pm.Application ationInfoandroid.content.Context.getApplication ationInfo()