所以我试图在我的Android应用中动态更改TextView
的不透明度。我有seekbar
,当我将拇指向右滑动时,我在其下面分层的TextView
应该开始变得透明。当拇指到达seekbar
的大约一半时,文本应该是完全透明的。我正在尝试使用从setAlpha(float)
上的View继承的TextView
方法,但Eclipse告诉我setAlpha()
未定义类型TextView
。我是以错误的方式调用方法吗?或者是否有其他方法可以改变不透明度?
这是我的代码(classicText
是TextView
,gameSelector
是seekbar
):
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch){
classicText.setAlpha(gameSelector.getProgress());
}
答案 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);