2015-02-06 2 views
0

У меня есть 3 текстовых вида, как показано ниже. как только я нажму на один из них, теперь он станет красным и вернется к цвету по умолчанию. Я хочу, чтобы выделенный текст был красным. У меня есть эти 3 textview в фрагменте.выделите выделенный текст в другом цвете

mQuickReturnView = (TextView) view.findViewById(R.id.footer); 
     mQuickReturnView1 = (TextView) view.findViewById(R.id.footer1); 
     mQuickReturnView2 = (TextView) view.findViewById(R.id.footer2); 

     TextView clickTextView = (TextView) view.findViewById(R.id.footer); 
     TextView clickTextView1 = (TextView) view.findViewById(R.id.footer1); 
     TextView clickTextView2 = (TextView) view.findViewById(R.id.footer2); 

     clickTextView.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       Toast.makeText(getActivity(), "toppings!", 
         Toast.LENGTH_LONG).show(); 
      } 

     }); 
     clickTextView1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       Toast.makeText(getActivity(), "Bigg pizza!", 
         Toast.LENGTH_LONG).show(); 
      } 

     }); 
     clickTextView2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       Toast.makeText(getActivity(), "Italiano!", 
         Toast.LENGTH_LONG).show(); 
      } 

     }); 

.xml файл

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- not selected has transparent color --> 
    <item android:state_pressed="false" android:state_selected="false"> 
     <color android:color="#D8000000"/> 
    </item> 
    <item android:state_pressed="true" android:state_selected="false" > 
     <color android:color="#ff0000"/> 
    </item> 
    <item android:state_pressed="false" android:state_selected="true"> 
     <color android:color="#ff0000"/> 
    </item> 
    <item android:state_pressed="true" android:state_selected="true"> 
     <color android:color="#ff0000"/> 
    </item> 
</selector> 

раскладка

<lk.gamma.pizzakraft.menu.QuickReturnListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/footer1" 
     android:layout_width="106.5dip" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/textview_background" 
     android:gravity="center" 
     android:paddingBottom="8dip" 
     android:paddingLeft="16dip" 
     android:paddingRight="16dip" 
     android:textColor="@drawable/textview_font" 
     android:paddingTop="8dip" 
     android:text="@string/footer3" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     /> 
    <!-- android:background="#D8000000" --> 

    <TextView 
     android:id="@+id/footer2" 
     android:layout_width="107dip" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_toRightOf="@+id/footer" 
     android:background="@drawable/textview_background" 
     android:gravity="center" 
     android:paddingBottom="8dip" 
     android:paddingLeft="16dip" 
     android:paddingRight="16dip" 
     android:paddingTop="8dip" 
     android:textColor="@drawable/textview_font" 
     android:text="@string/footer2" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     /> 

    <TextView 
     android:id="@+id/footer" 
     android:layout_width="106dip" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/textview_background" 
     android:gravity="center" 
     android:paddingBottom="8dip" 
     android:paddingLeft="16dip" 
     android:paddingRight="16dip" 
     android:paddingTop="8dip" 
     android:textColor="@drawable/textview_font" 
     android:text="@string/footer1" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     /> 

enter image description here

ответ

3

Существует один простое решение:

private static TextView selectedView = null; 

... ... 

eachTextView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      //change last selected view to be normal 
      if(selectedView != null) 
       selectedView.setTextColor(Color.parseColor("#D8000000")); 

      //set selectedView to be current selected view 
      selectedView = (TextView)v; 

      //change selected view to be red 
      selectedView.setTextColor(Color.parseColor("#FF0000")); 



      Toast.makeText(getActivity(), "toppings!", 
        Toast.LENGTH_LONG).show(); 
     } 

    }); 

Если вы хотите изменить TextView цвет фона insdead цвета текста, то просто замените 'SetTextColor' с ' setBackgroundColor.

Кроме того, для вашего случая, кажется, не нужно использовать селектор, потому что он предназначен только для конкретного изменения состояния просмотра, не имеет ничего общего с другим видом.

0

вы можете сделать это программно. Например, поместите этот код внутри clickTextView.setOnClickListener().

clickTextView.setTextColor(Color.parseColor("#FF0000")); 

Текст будет изменен на красный.

Для этого вам не нужен xml-файл, содержащий правила цвета.

0

Попробуйте с ниже код:

clickTextView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       changeViewBackground(true,false,false); 
     } 

    }); 
    clickTextView1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      changeViewBackground(false,true,false); 
     } 

    }); 
    clickTextView2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      changeViewBackground(false,false,true); 
     } 

    }); 


    private void changeViewBackground(boolean view1,boolean view2,boolean 
     view3) {  
      clickTextView.setSelected(view1); 
      clickTextView1.setSelected(view2); 
      clickTextView2.setSelected(view3); 
     } 
+0

im используя эти 3 текстовые изображения в виде 3 вкладок, я хочу выделить выбранную вкладку в красный, а другие 2 должны оставаться в цвете по умолчанию. когда я использую это, как только я выберу вкладку, она навсегда останется красной. как я могу изменить цвет закладки вкладки в соответствии с моим выбором вкладки –

+0

Я отредактировал код ... проверьте его один раз – user543

+0

Я использовал private void changeViewBackground (boolean view1, boolean view2, boolean view3) {, вне onCreateView. то он обрушился на il update m question с сообщением об ошибке, я получил –

Смежные вопросы