2017-09-07 84 views
0

我在我的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"/> 

默認情況下,這兩個背景顏色是灰色的,通過提拉rounded_corner.xml文件中設置,並點擊任何這些的時候,我希望它更改爲白色。 在我的Java文件我有

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

我知道,我可以使用setOnclickListener和運行基於瀏覽按鈕的ID之間的切換情況。

但是要求就是這樣。 那麼,我該如何實現它呢?

謝謝。

+0

*我怎麼能用這種方式來實現它?*什麼方式的人? – Vucko

+0

通過爲TextViews @Vucko – Aayushi

+0

以通用方式提供changeColor()中的一些代碼,但是當您更改背景時,您的圓角xml將替換爲簡單顏色。那麼你想灰色的文字顏色與圓形背景? @Aayushi –

回答

0

只需添加您的TextView的下面一小段代碼片段的onclick

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

我想設置背景。對不起,我會更新這個問題。請檢查@ yash786 – Aayushi

+0

@Aayushi請檢查更新後的答案 – yash786

+0

它不工作@ yash786 – Aayushi

0

只要改變你的函數。將Color.BLUE替換爲您想要的任何顏色或繪圖。因爲當您從xml設置onClick時,它會將其視圖傳遞給您可以使用視圖獲取的活動,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>