我有一个按钮如下:

<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),但它给了我一个错误。


当前回答

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

view_name.setAlpha(float_value);

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

其他回答

根据android docs视图,alpha值介于0和1之间。所以要像这样设置它:

View v;
v.setAlpha(.5f);

我刚刚发现你的问题,而有类似的问题与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;
  }
}

对于API < 11的textView颜色,我做了以下工作:

int textViewColor = textView.getTextColors().getDefaultColor(); 
textView.setTextColor(Color.argb(128, Color.red(textViewColor), Color.green(textViewColor), Color.blue(textViewColor))); //50% transparent

有点麻烦,但嘿,它工作:-)

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

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

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

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

view_name.setAlpha(float_value);

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