【问题标题】:How can I set selector just click the button?如何设置选择器只需单击按钮?
【发布时间】:2014-05-05 19:05:00
【问题描述】:

我已经搜索了很多次,但我没有找到我需要的。

我需要的是:

当用户只需单击按钮时,我希望它更改背景图像。(用户不需要按下按钮,我只需单击一下即可更改图像)

我所做的是:

在选择器中:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true" 
        android:drawable="@drawable/web_wl" />
    <item android:drawable="@drawable/web" />
</selector>

在按钮 xml 中:

  <Button
        android:id="@+id/btn_wb"
        android:layout_width="50dp"
        android:layout_height="50dp"  
        android:background="@drawable/web_selector" />

但这仅适用于用户将手放在按钮上,但我需要它只需单击一下即可。

提前致谢

【问题讨论】:

  • 比你不需要按钮,使用按钮以外的可点击视图,因为按钮有一个属性可以点击并返回到以前的状态。
  • 感谢您的回答,例如我可以使用什么?
  • 您可以使用任何视图,例如 textview 或 layouts,使其可点击并应用您的选择器。
  • 我做了 textview 并使其可点击,但它不起作用
  • 我可以使用 state_pressed 吗?或者别的什么

标签: android android-selector


【解决方案1】:

选择器使用Color State List Resource。我不确定在状态列表中是否存在预期的行为。但是,您可以通过单击侦听器事件而不是使用选择器来实现这一点:

// init a boolean
private boolean isPressed = false; 

// click listener event 
btn_wb.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
        // change the background once 
        if(!isPressed) {
            v.setBackgroundResource(R.drawable.web_wl);
            isPressed = true;
        }
    }
});

【讨论】:

  • 感谢您的回答,但我使用的是 pageviewer,如何更改片段中的 setBackgroundResource,因为 mainactivity 上的按钮?
  • 我不太清楚@ErsinGülbahar。您有一个使用 Fragments 的 ViewPager,但您的按钮位于 Activity 上,对吗?如果没有,请您再解释一下。
  • 是的,在我的主要活动中我有按钮,我使用 viewpager
  • 好吧@ErsinGülbahar,您需要从活动中更新背景按钮......不需要对片段做任何事情,因为您的按钮在活动内。只需将上面的 sn-p 代码放在活动的 onCreate 方法中即可。
  • 好的,我需要的只是一件事,如果一个人使用滑动,我如何理解和设置背景图像?有什么方法可以检测一个人在哪个标签页?
猜你喜欢
  • 2019-05-02
  • 1970-01-01
  • 2012-06-05
  • 2016-06-27
  • 1970-01-01
  • 2021-04-09
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多