16
Android向けにTextViewを自動調整
バックグラウンド 多くの場合、与えられた境界にTextViewのフォントを自動調整する必要があります。 問題 悲しいことに、この問題について話しているスレッドや投稿(および推奨される解決策)はたくさんありますが(例:ここ、ここ、ここ、ここ)、実際にうまく機能するものはありません。 だからこそ、実際の取引が見つかるまで、それぞれをテストすることにしました。 私はそのようなtextViewからの要件は次のようになるべきだと思います: フォント、書体、スタイル、および文字のセットを使用できるようにする必要があります。 幅と高さの両方を処理する必要があります 制限のためにテキストが収まらない場合を除き、切り捨ては行いません(例:長すぎるテキスト、小さすぎる使用可能なサイズ)。ただし、必要に応じて、水平/垂直スクロールバーをリクエストすることもできます。 複数行または単一行を許可する必要があります。複数行の場合、最大行と最小行を許可します。 計算が遅くなることはありません。最適なサイズを見つけるためにループを使用していますか?少なくとも最適化し、毎回1ずつサンプリングを増分しないでください。 複数行の場合、サイズ変更またはより多くの行を使用することを許可するか、「\ n」文字を使用して自分で行を選択できるようにする必要があります。 私が試したこと 私は非常に多くのサンプル(リンクのサンプルを含めて、私が書いた)を試してみましたが、ケースを処理するためにそれらを変更することも試みたと話しましたが、実際に機能するものはありません。 TextViewが正しく自動調整されるかどうかを視覚的に確認できるサンプルプロジェクトを作成しました。 現在、私のサンプルプロジェクトでは、テキスト(英語のアルファベットと数字)とtextViewのサイズのみをランダム化し、1行のままにしておきますが、これでも、試したどのサンプルでもうまく機能しません。 ここにコードがあります(ここにもあります): ファイル res/layout/activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Button" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_alignParentLeft="true" android:background="#ffff0000" android:layout_alignParentRight="true" android:id="@+id/container" android:layout_alignParentTop="true" /> </RelativeLayout> ファイル src/.../MainActivity.java public class MainActivity …