1

私はのTextViewにDrawableのを更新する方法を知りたいので、私は次のコードを記述します。AndroidのTextViewでDrawableのサイズを変更するにはどうすればよいですか?

public class MainActivity extends AppCompatActivity { 
    private TextView mText; 
    private ColorDrawable mColorDrawable; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mText = (TextView) findViewById(R.id.text_view); 
     mColorDrawable = new ColorDrawable(Color.RED); 
     mColorDrawable.setBounds(0, 0, 100, 100); 
     SpannableString string = new SpannableString("This is a color box: /box, right?"); 
     string.setSpan(new ImageSpan(mColorDrawable), 21, 25, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); 
     mText.setText(string); 

     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       mColorDrawable.setColor(Color.YELLOW); 
       mColorDrawable.setBounds(0, 0, 200, 200); 
       mText.invalidate(); 
      } 
     }, 1000); 
    } 
} 

期待される結果が/boxが赤い四角で置き換えられていることです。 1秒後に大きくなり、色が黄色に変わります。

ボックスの色が変わる前後のスクリーンショットです。

Before

After

あなたが見ることができるように、色が変更されたが、サイズが正しく変更されません。また、ボックスの後ろのテキストは右に移動せず、ボックスで覆われています。

私の質問は、もう一度setText()を使用していない場合は、DrawableとテキストをTextViewで再レイアウトする方法です。

答えて

0

ラン内部の "int型のサイズを"(合格にしてください)、その後setTextSize(サイズ)およびsetBoundsを追加します。

int size= 20; //you can change that later 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
      public void run() { 
      mColorDrawable.setColor(Color.YELLOW); 
      mColorDrawable.setBounds(0, 0, 200, 200); 
      mText.invalidate(); 

      size= size+ 20; 
      mText.setTextSize(size); 
      mColorDrawable.setBounds(0, 0, size, size); 

     } 
    }, 1000); 
} 
関連する問題