2016-08-31 4 views
0

Ich habe vier TextView und der Benutzer kann nur jeweils eine auswählen. Ich möchte die Hintergrundfarbe der ausgewählten textView ändern, und wenn der Benutzer eine andere Textansicht auswählt, sollte die zuvor ausgewählte textView deaktiviert werden.Aktivieren und Deaktivieren der TextView-Hintergrundfarbe

Hier ist meine Xml für die Textview:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" > 
     <shape android:shape="rectangle" > 
      <corners android:radius="50dip" /> 
      <stroke android:width="1dip" android:color="@color/white" /> 
      <gradient android:angle="-90" android:startColor="#ffffff" android:endColor="#ffffff" /> 
     </shape> 
    </item> 
    <item android:state_focused="true"> 
     <shape android:shape="rectangle" > 
      <corners android:radius="50dip" /> 
      <stroke android:width="1dip" android:color="@color/white" /> 
      <solid android:color="#ffffff"/> 
     </shape> 
    </item> 
    <item > 
     <shape android:shape="rectangle" > 
      <corners android:radius="50dip" /> 
      <stroke android:width="1dip" android:color="@color/white" /> 
      <gradient android:angle="-90" android:startColor="@color/transparent_white" android:endColor="@color/transparent_white" /> 
     </shape> 
    </item> 
</selector> 

Ich versuchte es programmatisch zu tun, aber es hat nicht funktioniert für mich:

<TextView 
       android:id="@+id/goalText2" 
       android:layout_width="match_parent" 
       android:layout_height="70dp" 
       android:background="@drawable/white_border_rounded" 
       android:padding="4dp" 
       android:layout_margin="18dp" 
       android:layout_gravity="fill" 
       android:gravity="center" 
       android:text="@string/goal2" 
       android:textColor="@color/white" 
       android:textSize="21sp"/> 

ich eine separate XML für die Textview erstellt haben .

public void onClick(View v) { 
    switch(v.getId()){ 
     case R.id.goalText1: 
      if(mGoal1.isSelected()) 
       mGoal1.setBackgroundColor(Color.WHITE); 
      break; 
     } 

Kann mir jemand vorschlagen, wie es geht?

+0

Sie versuchen, RadioButton von selbst zu implementieren. Warum? –

+0

@VladMatvienko Entschuldigung, ich habe dich nicht bekommen. Wo ich Radio Button anwende? –

+2

Die Funktionalität, die Sie implementieren möchten, ist eine Funktionalität des RadioButton. Verwenden Sie RadioButton. –

Antwort

0

Verwenden Sie das state_selected Attribut in Ihrem Hintergrund xml:

<item android:state_selected="true">...</item> 

dann in Code können Sie:

mGoal2.setSelected(true); 
mGoal1.setSelected(false); 

Um den Hintergrund zu ändern.

Verwandte Themen