2016-08-08 29 views
1

enter image description hereDrawable Selector + Textcolor

im Bild oben, haben 2, um den gleichen drawable Selektor. der erste, wenn er nicht gedrückt wird, und der andere, wenn er gedrückt wird. Wie kann ich Textfarbe hängt vom Zustand gedrückt Hier ist das Layout

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="40dp"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="40dp"> 

      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:background="@drawable/buttonback" 
       android:clickable="true" 
       android:id="@+id/l1" 
       android:onClick="dialog"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Individual" 
        android:id="@+id/t1" 
        android:layout_gravity="center" 
        android:textSize="18dp" 
        android:textStyle="bold" 
        android:textAlignment="center" 
        android:onClick="dialog" 
        android:textColor="#000000" /> 

       <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="SR 19.99/month after trial ends" 
       android:id="@+id/t2" 
       android:layout_gravity="center" 
       android:textSize="16dp" 
       android:textAlignment="center" 
       android:onClick="dialog" 
       android:textColor="#898989" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:background="@drawable/buttonback" 
      android:layout_marginTop="25dp" 
      android:clickable="true" 
      android:id="@+id/l2" 
      android:onClick="dialog"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Family (Up to 6 members)" 
       android:id="@+id/t3" 
       android:layout_gravity="center" 
       android:textSize="18dp" 
       android:textStyle="bold" 
       android:textAlignment="center" 
       android:onClick="dialog" 
       android:textColor="#000000" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="SR 29.99/month after trial ends" 
       android:id="@+id/t4" 
       android:layout_gravity="center" 
       android:textSize="16dp" 
       android:textAlignment="center" 
       android:onClick="dialog" 
       android:textColor="#898989" /> 
     </LinearLayout> 

    </LinearLayout> 

und dies ist der Selector ziehbar

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
    <shape android:shape="rectangle" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
     <stroke android:color="#ff395d" android:width="1dp"></stroke> 
     <solid android:color="#ff395d"></solid> 
     <corners android:radius="60dp"></corners> 
     <padding 
      android:top="15dp" 
      android:right="15dp" 
      android:left="15dp" 
      android:bottom="15dp" 
      ></padding> 
    </shape> 
</item> 
<item android:state_pressed="false"> 
    <shape android:shape="rectangle"> 
     <stroke android:color="#ff395d" android:width="1dp"></stroke> 
     <solid android:color="#ffffff"></solid> 
     <corners android:radius="60dp"></corners> 
     <padding 
      android:top="15dp" 
      android:right="15dp" 
      android:left="15dp" 
      android:bottom="15dp" 
      ></padding> 
    </shape> 
    </item> 
</selector> 

ich meinen Code soll wie im Bild funktioniert, aber ich tat es nicht wissen, wie man TextColor ändert

+0

tv.setTextColor (Color.yellow); – Abhishek

+0

Abhishek, wenn ich auf dem Layout, Text Farbe ändert sich in weiß – AndroidDev

+0

Sie müssen die Änderung in Ihrer onClickListner-Methode als ** youtTextView.seTextColor (COLOR.WHITE) ** – Abhishek

Antwort

0

Sie können die Textfarbe ändern, indem Sie unterhalb der Zeichnungsdatei verwenden.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:color="@android:color/white" /> 
    <item android:state_focused="true" android:color="@android:color/white" /> 
    <item android:state_pressed="true" android:color="@android:color/white" /> 
    <item android:color="@color/colorPrimary" /> 
</selector> 

Bitte setzen Sie die Zeichen so.

  <TextView 
       android:id="@+id/txtView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Hello" 
       android:textColor="@drawable/selector_text" /> 

und Sie haben setSelected Eigenschaft textView benutzen, um Ihre textview Farbe in Ihrem Java-Code zu ändern.

0

Eine Lösung besteht darin, das übergeordnete Layout zu erweitern, das den gedrückten Zustand behandelt und einen Rückruf bereitstellt. Dies kann nützlich sein, wenn Sie beispielsweise ein ImageView innerhalb des Layouts haben und die Tönungsfarbe basierend auf dem gedrückten Zustand ändern möchten.

Schnittstelle:

public interface PressedListener { 
    void onDown(); 

    void onUp(); 
} 

Layout-Klasse:

public class MyRelativeLayout extends RelativeLayout { 

    private PressedListener mPressedListener; 
    private Rect mViewRect; 

    public MyRelativeLayout(Context context) { 
     this(context, null); 
    } 

    public MyRelativeLayout(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public MyRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    public void setPressedListener(PressedListener listener) { 
     mPressedListener = listener; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (mPressedListener != null) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        mPressedListener.onDown(); 
        mViewRect = new Rect(); 
        getHitRect(mViewRect); 
        break; 
       case MotionEvent.ACTION_UP: 
       case MotionEvent.ACTION_CANCEL: 
       case MotionEvent.ACTION_OUTSIDE: 
        mPressedListener.onUp(); 
        mViewRect = null; 
        break; 
       case MotionEvent.ACTION_MOVE: 
        if (mViewRect != null && 
          !mViewRect.contains(Math.round(getX() + event.getX()), 
            Math.round(getY() + event.getY()))) { 
         mPressedListener.onUp(); 
         mViewRect = null; 
        } 

        break; 
      } 
     } 

     return super.onTouchEvent(event); 
    } 
}