web-dev-qa-db-ja.com

TextView autoSizeTextTypeがCompatで機能しない

autoSizeTextTypeを使ってみました。私のminSdkは24、すべてのtoolsは26、そしてcompat ist 26-beta2も同様です。

それらを調整可能にすることはコードを通して試されました:

dialogWeight.touchables.filterIsInstance<Button>().forEach {
TextViewCompat.setAutoSizeTextTypeWithDefaults(it, 
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM) }

そしてxml:

<Android.support.v7.widget.AppCompatTextView
Android:layout_height="match_parent"
Android:text="7"
Android:autoSizeTextType="uniform"/>

何か案は ?私はそれが現在バグを抱えていると信じ始めています

9
DeastinY

さて、うまくいった設定の組み合わせ:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">

<Android.support.v7.widget.AppCompatTextView
Android:text="7"
app:autoSizeTextType="uniform"/>

モジュールのbuild.gradleファイルの依存関係として、appcompat-v7ライブラリも必要です。

dependencies {
    implementation 'com.Android.support:appcompat-v7:27.1.1'
}
17
DeastinY

プログラムで解決しました。

TextView number1 = findViewById(R.id.number_one);
TextViewCompat.setAutoSizeTextTypeWithDefaults(number1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

そしてXML:

  <TextView
        Android:id="@+id/number_one"
        Android:autoSizeTextType="uniform"
        Android:gravity="center"
        Android:text="1"  />
5
Nick

理解すべき重要なことは、app:autoSizeTextTypeとは対照的にAndroid:autoSizeTextType

ドキュメント

サポートライブラリを通じてデフォルト設定をXMLで定義するには、app名前空間を使用して、autoSizeTextType属性をnoneまたはuniformに設定します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:app="http://schemas.Android.com/apk/res-auto"
  Android:layout_width="match_parent"
  Android:layout_height="match_parent">

  <TextView
    Android:layout_width="match_parent"
    Android:layout_height="200dp"
    app:autoSizeTextType="uniform" />

</LinearLayout>
5
JHowzer