2017-09-07 10 views
0

私のXMLファイルに2つのテキストビューがあります。描画可能rounded_corner.xmlファイルで設定された要素に背景色を一般的に設定します

<TextView 
      android:layout_width="@dimen/margin_0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:text="Trainings" 
      android:gravity="center" 
      android:background="@drawable/rounded_corner" 
      android:onClick="changeColor" 
      /> 
     <TextView 
      android:id="@+id/learning_programs" 
      android:layout_width="@dimen/margin_0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:text="Learning Programs" 
      android:background="@drawable/rounded_corner" 
      android:gravity="center" 
      android:onClick="changeColor"/> 

は、デフォルトでは、これらの両方の背景色が灰色であり、これらのいずれかがクリックされたとき、私はそれが白に変更したいです。私は私がsetOnclickListenerを使用して、ビューに基づいてボタンのID間のスイッチケースを実行することができることを知って

public void changeColor(){ 
    this.setBackground(getResources().getColor((R.color.dark_grey_color))); 
} 

を持っている私のJavaファイルで 。

しかし、このようにする必要があります。 これはどうやってこのように実装できますか?

ありがとうございました。

+0

を*あなたは、この最後の振る舞いをしたい場合は、次のようにそれを実装どのように私はそれをこのように実装することができますか?*どうやって男ですか? – Vucko

+0

TextViews @ Vucko – Aayushi

+0

の一般的な方法でchangeColor()にいくつかのコードを与えることで、背景を変更すると角が丸くなります。xmlは単純な色に置き換えられます。だからあなたは丸い背景で灰色のテキストの色をしたいですか? @Aayushi –

答えて

0

ただ、ちょうどあなたの機能を変更

your_textview.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.white)); 
+0

背景を設定したい。申し訳ありませんが質問を更新します。 @ yay786を確認してください。 – Aayushi

+0

@Aayushi更新された回答を確認してください – yash786

+0

それは動作していません@ yash786 – Aayushi

0

あなたのTextViewの以下のコードsnipetのonclickを追加します。 Color.BLUEは、好きな色や描画可能なものに置き換えてください。 onClickからxmlを設定すると、ビューを使用して取得できるアクティビティにビューが渡されるため、どのクリックが実行されたかを識別するためのgetIdが渡されるためです。あなたのケースでは、textviewを渡しているので、それをtextviewにキャストします。

public void changeColor(View view) { 
      //((TextView) view).setBackgroundColor(Color.BLUE); 

      GradientDrawable bgShape = (GradientDrawable)((TextView) view).getBackground(); 
      bgShape.setColor(Color.BLUE); 

     } 
0

あなたはあなたがのTextViewを維持することができますし、単にchangeColor法上の背景色を変更するクリックされるとを視野に、その背景を維持したい場合。 をクリックすると背景色がに変わります。チェックボックスの動作です。

チェックボックス

 <CheckBox 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:text="Trainings" 
      android:button="@null" 
      android:gravity="center" 
      android:background="@drawable/view_state"/> 
     <CheckBox 
      android:id="@+id/learning_programs" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:text="Learning Programs" 
      android:button="@null" 
      android:background="@drawable/view_state" 
      android:gravity="center"/> 

は次にそれらの状態を定義するための描画可能(描画可能/ view_state)を追加:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#000" /> <!-- clicked color --> 
     </shape> 
    </item> 
    <item android:state_checked="false"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#FFF" /> <!-- default color --> 
     </shape> 
    </item> 
</selector> 
関連する問題