Is there a way to set drawable's Alpha using XML?

后端 未结 9 721
无人及你
无人及你 2020-12-24 05:21

Easy like itself . I wanna make an alpha button , which would have a selected drawable this way:




        
相关标签:
9条回答
  • 2020-12-24 05:24

    It's been a while since the OP, but personally found a solution that worked a lot better for me than the suggested answers. Creating a BitmapDrawable makes is easily possible to set the alpha:

    <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/your_drawble"
        android:alpha="77">
    </bitmap>
    

    Alpha can be any value between 0 and 255. Note that it is sort of the inverse of the HEX color value alpha, as for example 70% alpha would be B3 in HEX and 77 in the BitmapDrawable.

    0 讨论(0)
  • 2020-12-24 05:26

    My goal was to make a button have it's selected and pressed states at a different alpha - but using the same (png) resource and affecting as few files as possible.

    My solution is similar to altering the alpha in a BitmapDrawable - but it does it from the selector so only one file is affected.

    Use the tint function of Bitmap, remember that the tint will color the existing pixels so use a white color. Eg, #80FFFFFF - to keep color as original but reduce alpha by 50% This could also be used to change color of the icon when pressed.

    This is my drawable XML file:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true">
            <bitmap
                android:src="@drawable/ic_camera"
                android:tint="#80FFFFFF">
            </bitmap>
        </item>
        <item android:state_pressed="true">
            <bitmap
                android:src="@drawable/ic_camera"
                android:tint="#80FFFFFF">
            </bitmap>
        </item>
        <item>
            <bitmap
                android:src="@drawable/ic_camera">
            </bitmap>
        </item>
    </selector>
    
    0 讨论(0)
  • 2020-12-24 05:30

    I'm using the following for a custom radio button which should be diagonally strikethrough when it is disabled.

    Example Image of 5 radio buttons where 4 of them are enabled

      <item android:state_enabled="false">
        <layer-list>
          <item>
            <shape android:shape="rectangle">
              <size
                  android:height="35dp"
                  android:width="35dp"/>
              <stroke
                  android:color="@color/someGrey"
                  android:width="1dp"/>
              <corners android:radius="1dp"/>
            </shape>
          </item>
          <item>
            <rotate
                android:fromDegrees="135"
                android:pivotX="50%"
                android:pivotY="50%"
                android:toDegrees="135">
              <shape android:shape="line">
                <stroke
                    android:color="@color/someGrey"
                    android:width="1dp"/>
              </shape>
            </rotate>
          </item>
        </layer-list>
      </item>
    
    0 讨论(0)
  • 2020-12-24 05:30

    i think you could create your own drawable which could take this argument as a parameter. i've never done such a thing though.

    check out this link :

    How to set alpha value for drawable in a StateListDrawable?

    if that's not possible, you can always do it in code...

    here are 2 links i've found about it, in case you wish to use bitmaps instead:

    • https://plus.google.com/+RomanNurik/posts/FZQcNW8G75K
    • https://gist.github.com/romannurik/5779875
    0 讨论(0)
  • 2020-12-24 05:36

    For those who have the same problem as OP, AppCompat now allows you to set 'alpha' parameter, as he wished in his target code:

        <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <!-- Play/Pause -->
        <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
        <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />
    
    </selector>
    

    More info here.

    0 讨论(0)
  • 2020-12-24 05:43

    I agree with Kasium sugest, so for some Android versions the especification to Alpha is in percent.

    <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/your_drawble"
        android:alpha="0.5">
    </bitmap>
    
    0 讨论(0)
提交回复
热议问题