2016-05-22 16 views
0

まず、text.getCurrentTextColor()とtext.setTextColor()は整数だけを取るので、私は値j、uを整数として宣言しました。
次に、OnClickListener()メソッドを作成しました。これをクリックすると、メソッド内のコードが実行されます。
その後、テキストの色を色id "j"または色id "u"に連続的に切り替える条件が2つ作成されました。TextViewのテキストの色を変更するにはどうすればいいですか?

自分のデバイスでプログラムを実行しましたが、クリックしたときにテキストが消えてしまい、再び元に戻りませんでした。

私はプログラミングに慣れていないので、どの投稿でも自分の問題に対する答えを見つけることができません。

私はOnClickListener()イベントを正しく理解しましたか?
android:clickable="true"は必要ですか?

<TextView 
     android:id="@+id/yourlabel" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="LabelText" 
     android:textSize="20dp" 
     android:clickable="true" /> 

のJava

 final int j=100000; //Color id number 
     final int u=690856; //Color id number 
     text=(TextView)findViewById(R.id.yourlabel); 
     text.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         if(j==text.getCurrentTextColor()) 
         { 
          text.setTextColor(u); 
         } 
         else 
         { 
          text.setTextColor(j); 
         } 

        } 

       } 
     ); 

答えて

1

あなたはonClickListenerを正しく理解していますが、この場合はandroid:clickable="true"を使用してください。 あなたが直面している問題は、getCurrentTextColor()が期待していたよりも他の値を返すことです。詳細な回答がここで見つけることができます: getCurrentTextColor from a TextView returns a weird color

あなたのコードを修正するには、あなたがこのようなcolors.xmlであなたの色を宣言する必要があります:あなたの活動に

<color name="yourFirstColor">#0097A7</color> 
<color name="yourSecondColor">#536DFE</color> 

あなたが経由で色を取得することができます:

final int j = ContextCompat.getColor(getApplicationContext(), R.color.yourFirstColor); 
final int u = ContextCompat.getColor(getApplicationContext(), R.color.yourSecondColor); 
0

変更するために使用ハンドラ。

Handle handler; 

は、その後、あなたのonCreateにそれを

handler = new Handler(); 

を初期化...このような何かを試してみて、柔軟なソリューションのために、私はこれは動作するはず

private void changeTextColor(TextView tv, int color){ 
handler.post(new Runnable(){ 
@Override 
private void run(){ 
text.setTextColor(color); 
} 
}); 
} 

メソッドを作成しています。..

関連する問題