Android Linkify ссылки textColor игнорируется, возможно ли изменение стиля CSS? - PullRequest
8 голосов
/ 18 августа 2011

Я использую Linkify в своем приложении, и текст посещенной ссылки выглядит темно-фиолетовым.Мой общий цвет фона темно-синий, поэтому его невозможно прочитать.Текст выделен белым цветом, но посещенные ссылки отображаются темно-фиолетовым цветом.Как мне переопределить это?

<TextView android:text="Website:" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"
          android:textSize="14dip"
          android:paddingBottom="2dip"
          android:background="#ffffff"
          android:textColor="#577dbe" />              
<TextView android:text="http://www.mysite.com/"
          android:layout_width="match_parent" 
          android:layout_height="wrap_content"
          android:textSize="12dip"
          android:paddingBottom="6dip"
          android:textColor="#ffffff"
          android:id="@+id/contactWeb1" />  

Ответы [ 4 ]

18 голосов
/ 24 августа 2011

Оказалось простое решение !

Однако вы не сможете выполнить дифференцирование visited / not visited.

    TextView contactWeb1 = (TextView) findViewById(R.id.contactWeb1);
    noteView.setText("http://www.blablaasd.com/");
    noteView.setLinkTextColor(Color.red); //for example
    Linkify.addLinks(noteView, Linkify.ALL);

My пытается перехватить посещенные состояния :

Используйте

    noteView.setLinkTextColor(getResources().getColorStateList(R.color.colors));

Вместо

    noteView.setLinkTextColor(Color.red);

В res/ создайте папку color и создайте colors.xml в res/color/

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
      android:state_window_focused="true" android:color="#00ff00">

    </item>
    <item
      android:state_window_focused="true" android:color="#00ff00">

    </item>
    <item android:color="#FF00ff"/>
</selector>

Я изо всех сил старался поймать посещенные штаты.Я перепробовал все состояния, которые может принимать селектор.

Возможно, я пропустил В случае, если вы узнали, поделитесь (:


ALTERNATE SOLUTION (работает толькоhtml links)

Установка цвета шрифта программно

Недостаток (будьте осторожны в этом вопросе)

  • Вам нужно будет определить, был ли он посещен или нет (это выполнимо)

    Это означает, что вы не перекрываете функциональность посещенных ссылок .

КОД :

TextView contactWeb1 = (TextView) findViewById(R.id.contactWeb1);
String desc = "<font color=\"red\"><a href='http://www.mysite.com/'>Visit my site</a></font>";
contactWeb1.setText(Html.fromHtml(desc));
contactWeb1.setMovementMethod(LinkMovementMethod.getInstance());
0 голосов
/ 25 августа 2011

Я столкнулся с той же проблемой, используя Linkify . Вместо этого вы можете использовать LinkMovementMethod и преобразовать текст в SpannableString .

TextView contactWeb1 = (TextView) findViewById(R.id.contactWeb1);
SpannableString str = SpannableString.valueOf(contactWeb1);
str.setSpan(new URLSpan(contactWeb1.getText()), 0, str.length() -1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
contactWeb1.setMovementMethod(LinkMovementMethod.getInstance());
0 голосов
/ 24 августа 2011

Я опробовал ваш код, и цвет моего TextView не изменился.Ну, решение вашей проблемы - добавить прослушиватель onClick в TextView и установить в нем цвет TextView.Поэтому при каждом щелчке по тексту будет выбран цвет, который вы укажете.

0 голосов
/ 18 августа 2011

Добавить:

android:textColor="#ffffff"

для элемента TextView в XML решает проблему ... кажется, что переопределение textcolor переопределяет другие стили цвета, связанные с элементом

см. Этот вопрос:

Цвет текста Android не изменяется при отключении

...