だから私はAndroidアプリでTextView
の不透明度を動的に変更しようとしています。私はseekbar
を持っていて、親指を右にスライドさせます、その下に重ねたTextView
は透明になり始めます。親指がseekbar
の約半分に達すると、テキストは完全に透明になります。setAlpha(float)
メソッドは私のTextView
のViewから継承されましたが、EclipseはsetAlpha()
がタイプTextView
に対して未定義であると言っています。メソッドを間違って呼び出していますかまたは、不透明度を変更する別の方法はありますか?
これが私のコードです(classicText
はTextView
、gameSelector
はseekbar
です):
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch){
classicText.setAlpha(gameSelector.getProgress());
}
このようにアルファを設定できます
int alpha = 0;
((TextView)findViewById(R.id.t1)).setTextColor(Color.argb(alpha, 255, 0, 0));
テキストの色に設定されるシークバーから取得するアルファとして
これは私のために働いた:
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
メソッドを次のように変更します
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
classicText.setAlpha((float)(gameSelector.getProgress())/(float)(seekBar.getMax()));
}