【问题标题】:Changing TextView Opacity in Android在 Android 中更改 TextView 的不透明度
【发布时间】:2012-02-08 10:59:55
【问题描述】:

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

这是我的代码(classicTextTextViewgameSelectorseekbar):

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

【问题讨论】:

    标签: android textview opacity seekbar


    【解决方案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_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. 现在您可以在活动中使用此文本视图,例如:

          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() 的方法。在回答之前检查一下!
          • 这是正确的参考,但你不能直接在你的 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);
            

            【讨论】:

              猜你喜欢
              • 2013-02-11
              • 2013-03-04
              • 2015-04-13
              • 2012-09-20
              • 1970-01-01
              • 1970-01-01
              • 2019-07-02
              • 2010-12-05
              • 1970-01-01
              相关资源
              最近更新 更多