在 Android 中更改 TextView 的不透明度
Posted
技术标签:
【中文标题】在 Android 中更改 TextView 的不透明度【英文标题】:Changing TextView Opacity in Android 【发布时间】:2012-02-08 10:59:55 【问题描述】:所以我试图在我的 android 应用程序中动态更改 TextView
的不透明度。我有一个seekbar
,当我将拇指向右滑动时,我在它下面分层的TextView
应该开始变得透明。当拇指到达seekbar
的大约一半时,文本应该是完全透明的。我试图在我的TextView
上使用从View 继承的setAlpha(float)
方法,但Eclipse 告诉我setAlpha()
未定义TextView
类型。我是否以错误的方式调用该方法?还是有其他方法可以改变不透明度?
这是我的代码(classicText
是 TextView
,gameSelector
是 seekbar
):
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
classicText.setAlpha(gameSelector.getProgress());
【问题讨论】:
【参考方案1】:我认为这是一种以编程方式为 TextView 设置 alpha 或不透明度的简单方法。 通过在 textView 的 getTextColors 之后使用函数 withAlpha。
// alpha value between 0..255
// 0 for transparent
classicText.setTextColor(classicText.textColors.withAlpha(100))
【讨论】:
【参考方案2】:现在XML上有一个属性
android:alpha="0.5"
通过布局改变不透明度
【讨论】:
【参考方案3】:可能已经晚了,但如果有人现在正在寻找这个,你所要做的就是:
textView.setAlpha();
在括号中输入 0 到 1 之间的数字
【讨论】:
【参考方案4】:这对我有用:
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_
android:layout_
android:text="sample alpha textview"
android:gravity="center"
android:id="@+id/at"
android:textColor="#FFFFFF"
android:background="#88FF88"
/>
...
3. 现在您可以在活动中使用此文本视图,例如:
at=(AlphaTextView)findViewById(R.id.at);
at.onSetAlpha(255); // To make textview 100% opaque
at.onSetAlpha(0); //To make textview completely transperent
【讨论】:
我用它的一个变体来改变文本的阿尔法而不改变背景阿尔法,谢谢!【参考方案5】:方法改为跟随
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
classicText.setAlpha((float)(gameSelector.getProgress())/(float)(seekBar.getMax()));
【讨论】:
这对 AFAIK 不起作用。我已经尝试过了。TextView 没有名为 setAlpha() 的方法。在回答之前检查一下! 检查方法developer.android.com/reference/android/view/… 这是正确的参考,但你不能直接在你的 Eclipse 中使用这种方法来进行 textview 或查看。请检查你自己。相反,你需要自定义 textview,然后在你的应用程序。 我会,等我有空的时候,但如果是的话,可能是由于TextView有一个额外的属性,所以textview本身的改变可能不会生效,在这种情况下,我们需要设置文本颜色,通过获取 rgb 和 alpha 分量并在 setTextColor 方法中设置新的 alpha。 是的......这是真的!但毕竟,我们需要使用自定义类来使代码和方法更容易!【参考方案6】:你可以像这样设置 alpha
int alpha = 0;
((TextView)findViewById(R.id.t1)).setTextColor(Color.argb(alpha, 255, 0, 0));
作为您从搜索栏获得的 alpha 值,将设置为文本颜色
【讨论】:
【参考方案7】: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);
【讨论】:
以上是关于在 Android 中更改 TextView 的不透明度的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中更改 TextView 的 fontFamily
在 Android 中,如何从 AsyncTask 更改 TextView? [复制]
使用 spannableString 在 android 中更改 TextView 文本的颜色
更改 android studio 中的 textview 样式