14

Html 文字列をTextView表示する (そして友好的に振る舞う) には、私のコードは次のようになります。

// itemHtml is a String of HTML defined above

TextView itemContent = (TextView) findViewById(R.id.itemContent);
itemContent.setText(Html.fromHtml(itemHtml));
itemContent.setMovementMethod(LinkMovementMethod.getInstance());

Html 文字列にリンクがある場合、TextViewクリック可能でフォーカス可能なリンクになります。ユーザーが特定のリンクにフォーカスすると (たとえば、d-pad を使用して)、リンク テキストが何らかの重要な方法で変化し、フォーカスが得られたことを示します。

問題は、ハニカム (Google TV など) または Android の Ice Cream Sandwich フレーバーを使用する方向パッドを備えたデバイスを使用してこの同じパターンをテストすると、テキスト内のリンクに、リンクがフォーカスされていることを示す目立った兆候が表示されないことです。

Enterキーを押すと、指定されたアクションが実行されるため、フォーカスが得られていることがわかります。テキスト内のさまざまなリンク間を移動することもできます。現在どのリンクにいるのか推測するしかないため、ユーザー エクスペリエンスが非常に悪くなります。

私が間違っていることはありますか?これを修正または回避する方法はありますか?

4

4 に答える 4

2

編集:少し頭がおかしくなった後、ようやく解決策を見つけたと思いましたただし、このソリューションは Honeycomb でのみ機能します。ICSはまだ解決されていません!

API 11 の時点で、Android には、テキストを選択可能にするかどうかを定義するための TextViews に関する新しい設定があります。

TextViewを使用setTextIsSelectable(true)して設定するか、XML レイアウトで定義できます。android:textIsSelectable="true"

アプリの下位互換性を維持するのは簡単なので、XML で定義するのがおそらく最善です。バージョン>= 11をターゲットにしていることを確認してください。そうしないと、おそらくエラーが発生します。

于 2011-10-31T21:52:58.473 に答える
1

これを行う最善の方法は、HTML に CSS スタイルを追加することです。Android が:hoverセレクターをサポートしていることは知っています。したがって、次のように修正できます。

String myLink = "<a href=\"http:\/\/google.com\">your link</a>"
Html.fromHtml(myLink);

それにCSSデータを含める方法を見つけます:(方法はわかりませんが、可能だと思います)

a :hover {
   color: red;
}

アップデート:

あなたの質問の答えはそこにあると思います。

于 2011-10-31T14:06:57.437 に答える
1

Honeycomb+ のテキストの色の状態リストは、フォーカス状態を別の色に設定しないか、色をオーバーライドして定数にします。

your_android_sdk_directory/android-14/data/res/ で色とスタイルを確認してください

テキストを android:autoLink="web" に設定することも役立つでしょうか?

于 2011-10-28T14:13:00.907 に答える
1

HTML.fromHTML が動作する方法は、文字列のさまざまな文字全体でさまざまな効果を持つ「スパン」を作成することです。これに対する 1 つの回避策は、ClickableSpanを別の CharacterStyles と組み合わせて使用​​して、クリック可能なテキストに色を付けることです。前のスパンでは、コールバックを登録できます。このコールバックは、(ブラウザを開く) URL を表示するインテントをブロードキャストすることができます。

于 2011-10-24T12:34:03.480 に答える