2015-02-06 126 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

即时通讯使用这3个textviews作为3个选项卡,我想突出显示选中的选项卡中红色和其他2应保持默认颜色。当我使用这个时,一旦我选择了它将永远变成红色的选项卡。我怎么能chnage突出显示选项卡颜色根据我的选项卡选择 – 2015-02-06 06:39:11

+0

我编辑了代码...检查一次 – user543 2015-02-06 06:51:58

+0

我用private void changeViewBackground(布尔视图1,布尔视图2,布尔 视图3){,在onCreateView。那么它崩溃il更新问题与错误消息我得到 – 2015-02-06 07:04:29

相关问题