2017-02-23 40 views
0

我有4個文本視圖,在4個文本視圖中,我必須從4個文本視圖中選擇任何人,還必須更改背景顏色(綠色)的同時突出顯示它。每個文本視圖使用自定義可繪製背景。選擇一個文本視圖,並在同一時間更改其顏色4個文字視圖

這是TextView的XML:

 <TextView 
      android:id="@+id/textview1" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/_55sdp" 
      style="@style/ChoosePlan" 
      android:background="@drawable/choose_plan_bg" 
      android:text="@string/part_time_monthly" 
      /> 

這意味着

setBackground(getResources().getDrawable(R.color.green)); 

將無法​​正常工作。

所以,我想是這樣的:

 private void changeColor() 
    { 
    Drawable tempDrawable = getResources().getDrawable(R.drawable.choose_plan_bg); 
    LayerDrawable bubble = (LayerDrawable) tempDrawable; //(cast to root element in xml) 
    GradientDrawable solidColor = (GradientDrawable) bubble.findDrawableByLayerId(R.id.outerRectangle); 
    solidColor.setColor(getResources().getColor(R.color.green)); 
    textview1.setBackground(tempDrawable); 
    textview1.setTextColor(getResources().getColor(R.color.white)); 
    } 

和onclick事件我把上面的方法:

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.tv_partTimeMonthly: 
      changeColor(); 
      checkDoneBtnVisibile(); 
      break; 
     case R.id.tv_partTimeAnnually: 
      checkDoneBtnVisibile(); 
      break; 
     case R.id.tv_fullTimeMonthly: 
      checkDoneBtnVisibile(); 
      break; 
     case R.id.tv_fullTimeAnually: 
      checkDoneBtnVisibile(); 
      break; 
     case R.id.iv_back_button: 
      finish(); 
      break; 
    } 
    } 

PS:必須使用的TextView(無ImageView的)

我被困到它。你能幫我把我推進嗎?

由於提前

共享截圖:

enter image description here

+0

那麼你現在面臨的問題究竟是什麼?這段代碼的結果是什麼? – skbrhmn

+0

@skbrhmn我的代碼不會工作我需要什麼。我的觀點是在4個文字瀏覽中一次選擇任何一個textview –

+0

我的意思是應用程序崩潰,或者它只是沒有做你想做的事情?你的意思是說,當你觸摸一個textView時,你只想'textView改變顏色,其他人要回到'choose_plan_bg'背景? – skbrhmn

回答

1

你只是在你的changeColour()方法更新textview1。如果你只是想突出顯示「只有」一個textView,隨時按下,那麼你可以嘗試如下所示。

首先,我提出了一個方法,它將textView作爲參數,將其背景更改回choose_plan_bg。指定背景所在的位置。

private void changeColorBack(TextView textView) 
{ 
     textView.setBackground(getResources().getDrawable(R.drawable.choose_plan_bg)) 
} 

類似地,changeColour方法:

private void changeColor(TextView textView) 
{ 
Drawable tempDrawable = getResources().getDrawable(R.drawable.choose_plan_bg); 
LayerDrawable bubble = (LayerDrawable) tempDrawable; //(cast to root element in xml) 
GradientDrawable solidColor = (GradientDrawable) bubble.findDrawableByLayerId(R.id.outerRectangle); 
solidColor.setColor(getResources().getColor(R.color.green)); 
textView.setBackground(tempDrawable); 
textView.setTextColor(getResources().getColor(R.color.white)); 


} 

接下來,創建一個獨特的OnClickListener和textViews設置爲這個監聽器:

View.OnClickListener listener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      changeColorBack(textView1); 
      changeColorBack(textView2); 
      changeColorBack(textView3); 
      changeColorBack(textView4); 
      switch (v.getId()) { 
       case R.id.textView1: 
        changeColor(textView1); 
        break; 
       case R.id.textView2: 
        changeColor(textView2); 
        break; 
       case R.id.textView3: 
        changeColor(textView3); 
        break; 
       case R.id.textView4: 
        changeColor(textView4); 
      } 

     } 
    }; 

    textView1.setOnClickListener(listener); 
    textView2.setOnClickListener(listener); 
    textView3.setOnClickListener(listener); 
    textView4.setOnClickListener(listener); 

這僅選擇被按壓並且所述的TextView取消選擇其他任何textView。

+0

感謝它的工作[+1] –

相關問題