使用'setAlpha'时,按钮的透明度未发生变化。

3
我正在开发一个简单的应用程序,其中有一组6个按钮。当我点击其中一个按钮时,其他按钮必须部分透明。我试图通过设置5个按钮的alpha值来实现这一点。 acre_button.getBackground().mutate().setAlpha(155); 应用程序的UI没有像我预期的那样改变。我只得到了3个半透明的按钮。当点击这两个按钮时,它们的透明度会慢慢变化。
提前感谢!
敬礼,
kariyachan

我为按钮设置了alpha 155。某些按钮的背景图像透明度没有改变(UI没有相应地更改)。 - Dev.Sinto
4个回答

1
Button btn;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main);  
    btn = (Button) findViewById(R.id.main_btn);  
    Drawable d = getResources().getDrawable(R.drawable.imagen);  
    d.setAlpha(60);  
    btn.setBackgroundDrawable(d);  
}

这对我有效 :)


0

请尝试以下操作:

button.setBackgroundColor(android.R.color.transparent);

嗨。谢谢你的回复。但是这会使整个按钮完全透明。我想要的是在按钮上添加一些不透明度(可能通过 alpha 值)。 - Dev.Sinto

0
在你的android-sdk目录中找到一个按钮背景,路径如下:android-sdk\platforms\android-10\data\res\drawable-mdpi\btn_default_normal.9.png 你可以修改它使其半透明(请注意这是一个9-patch,不应更改黑线的不透明度)。
一旦你在drawable目录中有了这个更改后的按钮,你就可以将其添加到你的代码中:
button.setBackgroundDrawable(getResources().getDrawable(R.drawable.transparentImage));

使其半透明并

button.setBackgroundDrawable(getResources().getDrawable(Android.R.drawable.btn_default_normal));

将其改回。


0

对于仍在寻找解决方案的人:

setBackgroundDrawable(Drawable d) 方法已经自 API 16 起被弃用

假设您的按钮ID为buttonId,您的可绘制对象命名为button_img, 请在onCreate方法中使用以下代码进行处理:

((Button)(findViewById(R.id.buttonId))).setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Drawable d = v.getResources().getDrawable(R.drawable.button_img);
            d.setAlpha(40);  
            if (Build.VERSION.SDK_INT >= 16)
                v.setBackground(d);
            else
                v.setBackgroundDrawable(d);
            //Then call your next Intent or desired action.

        }
    });

已测试并可正常运行!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接