AndroidプラットフォームのTextViewでテキストをラップする方法を知っている人はいますか。つまり、textviewのテキストが画面の長さを超える場合、2行目に表示する必要があります。
私は以下を検索して試しました:
Android:scrollHorizontally="false",
Android:inputType="textMultiLine",
Android:singleLine="false"
しかし、動作しません。
誰も私がそれを行う方法を提案できますか?.
私にとって、この問題はAndroid <4.0でのみ発生しました
使用したパラメーターの組み合わせは次のとおりです。
Android:layout_weight="1"
Android:ellipsize="none"
Android:maxLines="100"
Android:scrollHorizontally="false"
MaxLinesのカウントは、TextViewをラップしたランダムな最終ピースのようです。
TextView
がTableLayout
内にある場合の解決策は、TableLayout
にAndroid:shrinkColumns="1"
を設定することです。 (1
を、ラップするTextViewが含まれている列番号に置き換えます。(0インデックス付き))
AFAICT、TextView
には他の属性は必要ありません。
その他のケースについては、他の回答を参照してください。
FWIW、私は最初にそれと仕事のようなものを得た
<TextView
Android:id="@+id/inventory_text"
Android:layout_width="fill_parent"
Android:layout_weight="1"
Android:width="0dp"
しかし、その結果、ダイアログの下部に余分な空きスペースができました。
<TextView
Android:id="@+id/some_textview"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/textview_above"
app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
Android:maxLines="2"
を設定して、垂直方向の拡張を防ぎます(2は単なる例です)Android:ellipsize="end"
の良いアイデア0dp幅により、左右の制約でウィジェットの幅を決定できます。
左/右の制約を設定すると、ウィジェットの実際の幅が設定され、その中にテキストがラップされます。
2つのパラメーターを使用する必要があります。
Android:ellipsize="none"
:テキストはtextviewの幅でカットされません
Android:scrollHorizontally="false"
テキストは必要な数の行に折り返されます
これで問題が解決されます:Android:layout_weight="1"
。
わかりました。真実は中間のどこかにあります。親と子の視点から問題を見なければならないからです。以下のソリューションは、Androidバージョンに関係なく、スピナーモード= dialog
の場合にのみ機能します(問題ありません。VDおよびDesireSでAndroid => 2.2でテストしました)。
。スピナーの(親)モードを次のように設定します:
Android:spinnerMode="dialog"
textviewの(子カスタムビュー)プロパティを:に設定します
Android:layout_weight="1"
Android:ellipsize="none"
Android:maxLines="100"
Android:scrollHorizontally="false"
これがあなたにも役立つことを願っています。
Android Studio 2.2.3のinputType
プロパティの下には、textMultiLine
というプロパティがあります。このオプションを選択すると、同様の問題が解決されました。それがお役に立てば幸いです。
Android:maxEms
をAndroid:layout_weight="1"
とともに指定の値に設定すると、指定されたemの長さに達するとTextViewがラップされます。
RecyclerView内のレイアウト内のTextViewで作業していました。 Read this message
のテキストが切り取られていました。たとえば、Read this
です。 TextViewでAndroid:maxLines="2"
を設定しようとしましたが、何も変わりませんでした。ただし、Android:lines="2"
は最初の行にRead this
を、2行目にmessage
をもたらしました。
同じ問題がありました。次の変更により機能しました-
Android:layout_width="wrap_content"
Ellipsis、maxLines、またはlayout_weight-すべての違いはありませんでした。注-親の幅もwrap_contentとして設定されます。
AppCompatTextView
でapp:breakStrategy="simple"
を使用すると、段落レイアウトを制御します。
3つの定数値があります
TextView xmlでの設計
<Android.support.v7.widget.AppCompatTextView
Android:id="@+id/textquestion"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:scrollHorizontally="false"
Android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...."
Android:textColor="@Android:color/black"
Android:textSize="20sp"
Android:textStyle="bold"
app:breakStrategy="simple" />
現在の最小APIレベルが23以上の場合、コーディング中
yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
詳細については、こちらを参照してください BreakStrategy
TextView
sのサポートライブラリの自動サイズ設定を使用できます。同様のスレッドで my answer を確認してください。
次のようなものでScrollViewにTextViewを追加する必要があります。
<ScrollView Android:id="@+id/SCROLL_VIEW"
Android:layout_height="150px"
Android:layout_width="fill_parent">
<TextView
Android:id="@+id/TEXT_VIEW"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" />
</ScrollView>
あなたがしなければならないのは、あなたのtextview幅を設定することです。
Android:layout_width = "60dp"
幅を自由に変更できます。長い文を入力して、このように機能するかどうかを確認してください
Android:text = "私は世界クラスのソフトウェアエンジニアになりたい"
@Guykunのアプローチを試す
Android:layout_weight="1" Android:ellipsize="none" Android:maxLines="100" Android:scrollHorizontally="false"
また、親の幅がコンテンツをラップするように設定されていないことを確認してください。これは私が見逃していたことです。
それを行う簡単な方法:
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
デフォルトでテキストを折り返します
layout_with
を明確なサイズに設定するだけで、テキストが最大幅に達すると、次の行にオーバーフローして折り返し効果が生じます。
<TextView
Android:id="@+id/segmentText"
Android:layout_marginTop="10dp"
Android:layout_below="@+id/segmentHeader"
Android:text="You have the option to record in one go or segments(if you swap options
you will loose your current recordings)"
Android:layout_width="300dp"
Android:layout_height="wrap_content"/>
Android 2.2を使用しています。画面を超えると、textviewは次の行に自動的に移動します。
画面の最後の前の次の行にテキストを移動したい場合は、追加するだけです(独自のdp値を入力するだけです)。これは、テキストの右側に画像がある場合に役立ちます。
Android:layout_marginRight="52dp"
奇妙なことに-TextViewをコードで作成し、ラップしました-標準的なもの以外は何も設定していませんが、自分で確認してください:
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
childParams.setMargins(5, 5, 5, 5);
Label label = new Label(this);
label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label");
label.setLayoutParams(childParams);
Params定義からわかるように、私はLinearLayoutを使用しています。クラスLabelは単にTextViewを拡張するだけで、フォントサイズとフォントの色を設定する以外は何もしません。
エミュレーター(APIレベル9)で実行すると、自動的にテキストが3行に折り返されます。