我有一个按钮如下:

<Button 
     android:text="Submit" 
     android:id="@+id/Button01" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content">
</Button>

在onCreate()事件中,我像这样调用Button01:

setContentView(R.layout.main);

View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);

在应用程序中有一个背景,我想在这个提交按钮上设置一个不透明度。如何为这个视图设置不透明度?是可以在java端设置,还是可以在main.xml文件中设置?

在java方面,我尝试了Button01.mutate(). setalpha(100),但它给了我一个错误。


当前回答

我刚刚发现你的问题,而有类似的问题与TextView。我能够解决它,通过扩展TextView和覆盖onSetAlpha。也许你可以在你的按钮上尝试类似的东西:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class AlphaTextView extends TextView {

  public AlphaTextView(Context context) {
    super(context);
  }

  public AlphaTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public AlphaTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  @Override
  public boolean onSetAlpha(int alpha) {
    setTextColor(getTextColors().withAlpha(alpha));
    setHintTextColor(getHintTextColors().withAlpha(alpha));
    setLinkTextColor(getLinkTextColors().withAlpha(alpha));
    return true;
  }
}

其他回答

如果你使用Kotlin,像这样设置alpha很容易

imageView.alpha= 0.5F

其中值必须为浮点数。

android:background="@android:color/transparent"

以上是我所知道的… 我认为创建一个自定义按钮类是最好的主意

API等级11 最近我遇到了这个android:alpha xml属性,它的值在0到1之间。相应的方法是setAlpha(float)。

我猜你可能已经找到了答案,但如果没有(对于其他开发人员),你可以这样做:

btnMybutton.getBackground().setAlpha(45);

这里我将不透明度设置为45。你可以从0(完全透明)到255(完全不透明)之间任意设置它

对于视图,您可以通过以下方法设置不透明度。

view_name.setAlpha(float_value);

属性view.setAlpha(int)对于大于11的API版本已弃用。从今以后,使用. setalpha (0.5f)这样的属性。

尽管btnMybutton.getBackground () .setAlpha (45);这是个好主意,它只是对背景应用alpha,而不是整个视图。

如果你想应用alpha视图使用btnMybutton.setAlpha(0.30f);代替。这应用不透明度的视图。它接受0到1之间的值。

医生说:

Sets the opacity of the view. This is a value from 0 to 1, where 0 means the view is completely transparent and 1 means the view is completely opaque. If this view overrides onSetAlpha(int) to return true, then this view is responsible for applying the opacity itself. Otherwise, calling this method is equivalent to calling setLayerType(int, android.graphics.Paint) and setting a hardware layer. Note that setting alpha to a translucent value (0 < alpha < 1) may have performance implications. It is generally best to use the alpha property sparingly and transiently, as in the case of fading animations.