2016-05-22 3 views
0

Прежде всего, я объявил свои значения j, u целыми числами, потому что text.getCurrentTextColor() и text.setTextColor() принимают только целые числа.
Затем я создал метод OnClickListener(), так что, когда я нажимаю на него, он запускает код внутри метода.
После этого я создал два условия, которые будут непрерывно переключаться по цвету текста либо по цвету id «j», либо по цвету «u».Как изменить цвет текста в TextView, щелкнув его?

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

Я новичок в программировании, и я не могу найти ответ на свою проблему в любых сообщениях.

Был ли я правильно знаком OnClickListener()?
И android:clickable="true" необходимо?

<TextView 
     android:id="@+id/yourlabel" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="LabelText" 
     android:textSize="20dp" 
     android:clickable="true" /> 

Java

 final int j=100000; //Color id number 
     final int u=690856; //Color id number 
     text=(TextView)findViewById(R.id.yourlabel); 
     text.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         if(j==text.getCurrentTextColor()) 
         { 
          text.setTextColor(u); 
         } 
         else 
         { 
          text.setTextColor(j); 
         } 

        } 

       } 
     ); 

ответ

1

Вы правильно поняли onClickListener и нет, у вас нет использовать в этом случае android:clickable="true". Проблема, с которой вы сталкиваетесь, заключается в том, что getCurrentTextColor() возвращает другие значения, чем вы ожидаете. Подробный ответ можно найти здесь: getCurrentTextColor from a TextView returns a weird color

Чтобы исправить код, который вы должны объявить свои цвета в colors.xml так:

<color name="yourFirstColor">#0097A7</color> 
<color name="yourSecondColor">#536DFE</color> 

В вашей деятельности вы можете получить цвета с помощью:

final int j = ContextCompat.getColor(getApplicationContext(), R.color.yourFirstColor); 
final int u = ContextCompat.getColor(getApplicationContext(), R.color.yourSecondColor); 
0

Использование обработчика для изменения. Попробуйте что-то вроде этого ...

Handle handler; 

Затем на вашем OnCreate инициализировать его

handler = new Handler(); 

И гибкое решение Я создаю метод

private void changeTextColor(TextView tv, int color){ 
handler.post(new Runnable(){ 
@Override 
private void run(){ 
text.setTextColor(color); 
} 
}); 
} 

Это должно работать .. .