2

В моем проекте мне нужно переключить стиль TextView на Normal и Bold. Вот код:Невозможно переключить стиль TextView динамически

mTitleTextView.setTypeface(mTitleTextView.getTypeface(), letterItem.isRead() ? Typeface.NORMAL : Typeface.BOLD); 

Это хорошо работает, когда TextView не выделены жирным шрифтом. Но когда текущее состояние выделено жирным шрифтом, оно не возвращается в нормальное состояние.

mTitleTextView.setTypeface(null, letterItem.isRead() ? Typeface.NORMAL : Typeface.BOLD); 

Выше строки исправлена ​​проблема, но я использовал собственный шрифт и передаю null для текущего шрифта, удаляет шрифт.

+0

mTitleTextView.setTypeface (mTitleTextView.getTypeface(), Typeface.NORMAL); try mTitleTextView.invalidate(); –

ответ

1

После завязывания на некоторое время это работает для меня:

textView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.invalidate(); 
     if(isCliked){ 
      isCliked = false; 
      Typeface face=Typeface.createFromAsset(getAssets(), "test.ttf"); 
      textView.setTypeface(face,Typeface.NORMAL); 
     } 
     else{ 
      Typeface face=Typeface.createFromAsset(getAssets(), "test.ttf"); 
      textView.setTypeface(face, Typeface.BOLD); 
      isCliked = true; 
     } 
     Log.i("MainActivity", "onClick: "+isCliked); 
    } 
}); 

гарнитура останется прежним, и изменить только смелый и нормальный

+0

Как я уже сказал в своем вопросе, передавая null для первого аргумента, удаляет пользовательский шрифт. –

+0

@MisaghEmamverdi Я обновляю свой ответ, пожалуйста, посмотрите, я пробовал, и он работает. –

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