在Android中更改TextView不透明度

时间:2012-01-12 04:48:35

标签: android textview opacity seekbar

所以我试图在我的Android应用中动态更改TextView的不透明度。我有seekbar,当我将拇指向右滑动时,我在其下面分层的TextView应该开始变得透明。当拇指到达seekbar的大约一半时,文本应该是完全透明的。我正在尝试使用从setAlpha(float)上的View继承的TextView方法,但Eclipse告诉我setAlpha()未定义类型TextView。我是以错误的方式调用方法吗?或者是否有其他方法可以改变不透明度?

这是我的代码(classicTextTextViewgameSelectorseekbar):

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch){
    classicText.setAlpha(gameSelector.getProgress());
}

6 个答案:

答案 0 :(得分:40)

你可以像这样设置alpha

int alpha = 0;
((TextView)findViewById(R.id.t1)).setTextColor(Color.argb(alpha, 255, 0, 0));

作为从搜索栏获取的将设置为文本颜色的alpha

答案 1 :(得分:11)

这对我有用:

1。创建类 AlphaTextView.class

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));
    getBackground().setAlpha(alpha);
    return true;
  }    
}

2。添加此项而不是使用TextView在xml中创建textview:

...
   <!--use complete path to AlphaTextView in following tag-->
   <com.xxx.xxx.xxx.AlphaTextView
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="sample alpha textview"
         android:gravity="center"
         android:id="@+id/at"
         android:textColor="#FFFFFF"
         android:background="#88FF88"
        />
...

3. 现在,您可以在活动中使用此textview,如:

at=(AlphaTextView)findViewById(R.id.at);

at.onSetAlpha(255); // To make textview 100% opaque
at.onSetAlpha(0); //To make textview completely transperent

答案 2 :(得分:5)

将方法改为以下

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
    classicText.setAlpha((float)(gameSelector.getProgress())/(float)(seekBar.getMax()));
}

答案 3 :(得分:3)

可能已经晚了,但是如果有人现在正在寻找这个,那么您要做的就是:

textView.setAlpha();

在方括号中输入0到1之间的数字

答案 4 :(得分:1)

现在在XML上有一个属性

android:alpha =“ 0.5”

通过版式更改不透明度

答案 5 :(得分:-1)

View.setAlpha(float xxx);

范围xxx - 0 - 255,0是透明的,255是不透明的。

int progress = gameSelector.getProgress();
int maxProgress = gameSelector.getMax();
float opacity = (progress / maxProgress)*255;
classicText.setAlpha(opacity);