3

私は現在、Android の Textview のマーキー機能で遊んでいます。しかし、問題があります。いくつかの TextView を含むレイアウトがあります。音楽ファイルのタイトルを表示するそのうちの 1 つで、マーキー機能を適用したいと考えています。別の例では、現在のトラック時間を (毎秒) 更新し続けています。

問題は、トラック時間を表示する TextView が更新されるたびに (setText())、他の TextView のマーキーが停止することです。これは、 setTExt() が、テキストを適用する TextView にフォーカスを移動するためだと思います。

これに対する解決策はありますか?

このチュートリアルのマーキー TextView のカスタム クラスを使用しました

他の TextView がフォーカスを「盗む」ことができない可能性(おそらくカスタムクラスも)はありますか?

ありがとう!

よろしく

4

6 に答える 6

4

TextView が setEnabled(true) であるか、フォーカスを受け取ると、マーキーが有効になります。setEnabled(true) を使用して、フォーカスが移動したときに他の TextView がマーキーを停止しないようにします。

于 2011-02-11T22:08:18.857 に答える
4

私の場合、setEnabled(true)助けにはなりませんでした。フォーカスに問題がなかったため、フォーカスを要求することも、そのようなこともありません。TextView が通過するたびに、マーキーも再起動すると思いますonLayout()

私の場合、TextView は LinearLayout の中にありましたlayout_height="wrap_content"。トラック時間を表示する TextView は、マーキー付きの TextView の下にありました。毎秒下のTextViewを更新していたとき、OSがその高さを最初から計算し、TextViewの高さに基づいてLinearLayout全体の高さを計算したと思います(もちろん、毎回同じでした)。そのため、LinearLayout 全体 (およびその子) が取得onLayout()され、マーキーが再起動されました。

簡単に言えば、コンテナー LinearLayout の高さを固定値に設定すると、マーキーが機能し始めました。

于 2012-11-22T13:52:48.740 に答える
3

しかし、問題があります。いくつかの TextView を含むレイアウトがあります。ここで解決策を見つけました: http://androidbears.stellarpc.net/?p=185

TextView クラスを拡張し、いくつかのメソッドをオーバーライドする必要があります

@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
    if(focused)
       super.onFocusChanged(focused, direction, previouslyFocusedRect);
}



@Override
public void onWindowFocusChanged(boolean focused) {
    if(focused)
       super.onWindowFocusChanged(focused);
}

@Override
public boolean isFocused() {
       return true;
}
于 2012-09-26T13:22:38.353 に答える
1

ここで私の答えを見てください:https://stackoverflow.com/a/13841982/1823503

アイデアは次のとおりです。

  • プログラムで幅と高さを修正するには
  • 設定するSelected
  • TextView をオーバーライドしてフォーカスの問題を修正する
于 2012-12-12T14:43:46.753 に答える
1

単純にrequestFocus();できます。新しい音楽 TextView が更新された後、マーキーしたい TextView に戻ります。これを達成できない場合は、コードを投稿してください。

TextView.requestFocus()

于 2011-02-11T22:05:17.937 に答える
0

マーキー TextView を LinearLayout でラップするだけです

于 2016-08-01T06:42:37.117 に答える