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

按钮按下的状态填充发生在正常状态

江佐
2023-03-14

我有一个3D看按钮在正常状态下,与3DP在右侧和底部,当我按下按钮,我希望它看起来3D与3DP在左侧和顶部,这一次。但是,当我更改项形状的按下状态的填充值时,即使按钮处于正常状态/未按下,填充值的更改也会显示出来。

我的按钮看起来是这样的:

我也希望它按下时也是这样:

btn_gray1.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#acacac" />
            <stroke
                android:width="0dp"
                android:color="#acacac" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#c2c2c2"/>
            <stroke
                android:width="0dp"
                android:color="#c2c2c2" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

btn_gray2.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#acacac" />
            <stroke
                android:width="0dp"
                android:color="#acacac" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#959595"/>
            <stroke
                android:width="0dp"
                android:color="#959595" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
</selector>

btn_gray.xml

  <?xml version="1.0" encoding="utf-8"?>
    <layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:drawable="@drawable/btn_gray2"/>
       <item android:drawable="@drawable/btn_gray1"/>  
    </layer-list>

共有1个答案

从阎宝
2023-03-14

这样做

xml布局中的按钮

<Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TUTORIAL"
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:background="@drawable/button_selector" />

在drawable文件夹button_selector.xml中创建一个选择器xml

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

</selector>

drawable文件夹中的Button_Background_One.xml

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <shape>
            <solid
                android:color="#959595" />
            <stroke
                android:width="0dp"
                android:color="#959595" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#c2c2c2"/>
            <stroke
                android:width="0dp"
                android:color="#c2c2c2" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
</layer-list>

drawable文件夹中的

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <shape>
            <solid
                android:color="#959595" />
            <stroke
                android:width="0dp"
                android:color="#959595" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#c2c2c2"/>
            <stroke
                android:width="0dp"
                android:color="#c2c2c2" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
</layer-list>

这应该行,试试看

 类似资料:
  • 我以编程方式生成了许多按钮(一些按钮用于增加值,而另一些按钮用于减少值),当它们调整的值达到最大值或最小值时,我会禁用这些按钮。(即,当达到最大值时,“增加”按钮被禁用,而当达到最小值时,“减少”按钮被禁用。)除了禁用,我还将按钮状态设置为“按下”,以直观地指示已达到极限值,并且按钮不再工作。 我的按钮onClickListener的'增加'按钮看起来像这样: ClickListeners上相应的

  • 我有一个调查,有一堆问题,包括实际问题,一些是或否的单选按钮和一个评论框。我加了一张照片给你看。下面是填充问题后的html结构。 此信息通过web服务和jquery动态填充。看起来这些问题是动态填充的,每个问题都包含相同的类名、范围名等。有40多个问题被附加到div中。 我想做的是选择一个特定的问题并选中一个特定的单选按钮。然后,如果单击某个单选按钮,则会自动选中其他单选按钮。我相信Jquery是

  • 我整天都在用这些按钮。首先,这两个按钮都在对方的上面,看起来像这样,http://I.imgur.com/wvmntpq.jpg,现在在这里发布了一个问题之后,它看起来像这样,http://imgur.com/omxdqct我被告知在我的css中改变如下: css:button{ float:left;margin-top:250px;color:white;display:block;margi

  • 本文向大家介绍bootstrap改变按钮加载状态,包括了bootstrap改变按钮加载状态的使用技巧和注意事项,需要的朋友参考一下 bootstrap里面有个激活按钮的时候,按钮变成不可用的; 按照官网里面的方法介绍是在button按钮加个 data-loading-text="Loading..." 属性,然后js总体代码是这样: 其中autocomplete="off"属性是针对FF浏览器在页

  • 解决方案见Deepa答案:) 我阅读了StackOverFlow中给出的所有解决方案,但在我的情况下似乎没有一个可行。问题是我的应用程序中有几个按钮,它们会对用户的操作做出不同的反应。例如,当应用程序启动时,除了两个按钮之外,所有按钮都被禁用。因此我将默认的drawable设置到XML中。当我打开一个文件时,所有这些都是可点击的,但其中一些,当按下时,需要保持按下(我已经这样做了),但其他的只是需

  • 我用Flatter和ESP32创建了一个简单的家庭自动化项目,在我的应用程序上,我有一系列按钮,如果按下或不按下,这些按钮将改变firestore中变量的状态。如果按下,则发送True,如果不发送false。我正在努力实现这一点,但我似乎做不好 在onPressed中是我尝试过的,所有代码都在一个有状态类中: 第二次尝试: 问题在于按钮的格式。Uni发送的代码非常有效。