Изменение непрозрачности TextView в Android - PullRequest
10 голосов
/ 12 января 2012

Так что я пытаюсь динамически изменить непрозрачность TextView в моем приложении для Android. У меня есть 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());
}

Ответы [ 4 ]

40 голосов
/ 12 января 2012

Вы можете установить альфа следующим образом

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

в качестве альфы, которую вы получаете с панели поиска, которая будет установлена ​​в цвет текста

11 голосов
/ 12 января 2012

Это сработало для меня:

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:

...
   <!--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 голосов
/ 12 января 2012

изменить метод на следующий

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
    classicText.setAlpha((float)(gameSelector.getProgress())/(float)(seekBar.getMax()));
}
0 голосов
/ 12 января 2012

View.setAlpha (float xxx);

диапазон xxx - 0 - 255, 0 - прозрачный, 255 - непрозрачный.

...