9

アプリで使用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

4 に答える 4

18

それは簡単な解決策であることが判明しました!

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);

訪問した状態をキャッチする私の試み:

使用する

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

それ以外の

    noteView.setLinkTextColor(Color.red);

フォルダーのres/作成とcolor作成colors.xmlres/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 リンクでのみ機能)

プログラムでフォントの色を設定する

デメリット(ここは要注意)

  • 訪問されたかどうかをキャッチする必要があります(これは実行可能です)

    これは、訪問したリンクの機能をオーバーライドしていないことを意味します。

コード:

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());
于 2011-08-24T15:24:34.917 に答える
0

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());
于 2011-08-25T15:53:47.987 に答える
0

追加:

android:textColor="#ffffff"

xmlのTextView要素に問題を解決します... textcolorをオーバーライドすると、要素に関連する他のカラースタイルがオーバーライドされるようです

この質問を参照してください:

無効にしても Android のテキスト ビューの色が変わらない

于 2011-08-18T17:26:10.337 に答える
0

コードを試してみましたが、TextView の色が変わりませんでした。あなたの解決策は、 onClick リスナーを TextView に追加し、その中に TextView の色を設定することです。したがって、テキストがクリックされるたびに、指定した色に設定されます。

于 2011-08-24T04:13:22.310 に答える