10

アプリの上部 4 分の 1 を占め、動的なテキスト セットを表示する見出しを表示するアクティビティがあります。場合によっては、すべてが 1 行に収まるので、フォント サイズを大きくして読みやすくしたいと考えています。場合によっては、複数行 (通常は 4 行未満) になり、小さくする必要があります。

複雑なのは、setText で改行を明示的に設定すると、予期しない場所に改行が挿入されることがあります。つまり、次のようになります。

"テキストの最初の行\nテキストの 2 行目"
に変わる可能性があります (このバージョンでは正しく調整されています):
「私の最初の行
             文章
   私の二行目
          テキストの」

TextView が改行を挿入しようとしないようにする方法と、全体のフォーマットを処理する方法がわかりません。テキストを 1 つの非常に長い単語に設定すると、選択したポイントの途中に改行が挿入されます。また、最後の数行のテキストをランダムに取得する場合もあります。

フォント サイズを明示的に非常に小さく設定して正しくレイアウトし、手動でサイズを調整する必要がありますか? これに使用する必要がある「ベストプラクティス」はありますか? フォント サイズを適度に大きなフォントに設定すると、ある程度は機能しますが、これを行う「正しい」方法が何であるかを理解しておくとよいでしょう。そして、4つの単一行のTextViewを手動で追加して自分でフォーマットする必要はありません。

私が使用しているレイアウトxmlは次のとおりです。

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dip"
        android:layout_marginRight="8dip"
        android:singleLine="false"
        android:ellipsize="marque"
        android:gravity="right|bottom"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="30sp"
/>
4

4 に答える 4

1

文字列の長さを数えて、各長さに最適なサイズに合わせてテキストサイズを設定できます

この形の何か

if(myString.length()==40){
    myTextview.setTextSize(11);
else if(myString.length()==25){
    myTextview.setTextSize(16);
...

これが役立つことを願っています。

于 2012-12-16T04:42:46.443 に答える
0

詳細については、このAndroid TextView Justify Textの回答を確認してください。webviewを使用すると、行の配置を気にする必要がなくなり、html cssプロパティで管理できます

于 2012-09-10T12:44:12.710 に答える
0

あなたはそれを行うことができます。文字列値に改行文字を追加します。次に、この文字列値を TextView のテキスト属性として設定します。

String temp = "ASDF \n"+"EFG \n"+"HIJ";
TextView tv=//find it from the context
tv.setText(temp);
于 2012-04-07T09:06:00.497 に答える
-1

私があなたを正しく理解したことを確認するためにあなたの質問を要約させてください。

  1. 入力は常に1〜4行のテキストです
  2. あなたはいつもそしてあなたが複数の行を持っている場合にのみ行の終わりで壊れたい
  3. 高さ画面の1/4のテキストビューに収まるように、各行をできるだけ大きくしたいですか?

カスタムビューを作成することをお勧めします:

  • Paint.getTextBoundsを使用して、コード内で動的に最適なテキストサイズを決定します
  • テキストを描画するには、線形などを制御するためのヘルパークラスStaticLayoutを使用できます。
  • カスタムビューで画面の1/4を占めるようにするには、LinearLayout内に配置し、layout_weightを使用して高さを割り当てるか、View.onMeasureでプログラムで設定します。
于 2012-09-10T12:53:32.183 に答える