4

TextView に配置するテキスト コンテンツが 1 行に収まるかどうかを調べる方法はありますか?

私が達成したいことは、添付の画像(listViewのセクション)に表示されています。問題は に関連していtextView#3ます。大きすぎる場合は下に配置したいtextView#2が、コンテンツが十分に短い場合は右に配置したいtextView#2(で見られるシナリオrow#3は私が逃げたいものです)

だから、誰か?..どうすればこの特定の問題を解決できますか? リストビューの行の単一のレイアウトではこれを達成できないと想像しています..

ここに画像の説明を入力

4

4 に答える 4

2

可能です。テキストサイズを測定し、TextViewサイズと比較する必要があります。テキスト幅>textView幅が長すぎる場合。

この投稿からテキスト測定について学ぶことができます。

また、TextViewの組み込み機能を使用して、1行にし、テキストのellipsizeメソッドを設定することもできます。

于 2013-01-10T08:23:33.737 に答える
0

解決策 (& きれいなものではない) は、文字列が textView で占有しているスペースを計算することです。私の特定のケースでは、2 つの textViews (3 & 3B) を追加し、数学の計算結果に応じて、1 つだけを使用し、もう 1 つを非表示にします。

詳細:

  1. アダプターの getView メソッドで、親の listView の幅を調べます

    public View getView(int position, View convertView, ViewGroup parent) { int listViewWidth = parent.getWidth();

  2. 同じ行に配置された他のtextViews(私の場合はtextView2のみ)によって占有スペースを計算します。

    ペイント paint = textViewX.getPaint(); 占有幅 = (int) (占有幅 +paint.measureText("textview に配置するテキスト"));

  3. 最後のテキストビューに配置されるテキストが占めるスペースを比較します(私のスクリーンショットtextView3では、幅を計算する同じ式)&残りのスペースと比較します(listViewWidth - occupiedWidth

  4. 正しいtextViewにテキストを設定し、他のテキストを非表示にします
  5. .. 必要に応じてコードを改善する

新しいレイアウト 結果

于 2013-01-11T09:44:24.223 に答える
-2

textviewのこのプロパティを試してください

android:maxLength="number of characters you want to display in textview"

Actvityで、文字列の長さがビューの位置を変更するよりも>maxLengthであるかどうかを確認します。

于 2013-01-10T10:30:12.363 に答える