web-dev-qa-db-ja.com

Android)でTextViewの不透明度を変更する

だから私はAndroidアプリでTextViewの不透明度を動的に変更しようとしています。私はseekbarを持っていて、親指を右にスライドさせます、その下に重ねたTextViewは透明になり始めます。親指がseekbarの約半分に達すると、テキストは完全に透明になります。setAlpha(float)メソッドは私のTextViewのViewから継承されましたが、EclipseはsetAlpha()がタイプTextViewに対して未定義であると言っています。メソッドを間違って呼び出していますかまたは、不透明度を変更する別の方法はありますか?

これが私のコードです(classicTextTextViewgameSelectorseekbarです):

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

このようにアルファを設定できます

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

テキストの色に設定されるシークバーから取得するアルファとして

40
Pratik

これは私のために働いた:

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"
        />
...

これで、次のようなアクティビティでこのテキストビューを使用できます。

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

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

メソッドを次のように変更します

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