【问题标题】:Android Studio autoTextSizeType with appAndroid Studio autoTextSizeType 与应用程序
【发布时间】:2018-04-10 18:32:04
【问题描述】:

根据this page,可以使用app: 命名空间在面向低于v26 的API 版本的应用中使用新的autoSizeTextType 功能。

我的根布局元素是 LinearLayout,它有 app 命名空间标签。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    etc

我的TextView定义如下:

        <Android.support.v7.widget.AppCompatTextView
            android:id="@+id/each_pays_amount"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:maxLines="1"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:paddingBottom="0dp"
            android:paddingLeft="8dp"
            android:paddingRight="8dp"
            android:paddingTop="0dp"
            android:text="@string/decimal_zeroes"
            android:textAlignment="center"
            android:textColor="#FFFFFF"
            android:textSize="140sp"
            app:autoSizeTextType="uniform"
            android:textStyle="bold" />

在我的 app.iml 中,我有以下内容:

dependencies {
    implementation 'com.android.support:support-v13:27.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:27.0.2'
    compile 'com.android.support:appcompat-v7:27.0.2'
    compile 'com.google.android.gms:play-services-ads:11.8.0'
    compile 'com.tbuonomo.andrui:viewpagerdotsindicator:1.0.1'
}

然而,每当加载布局时,我的应用程序就会崩溃并出现以下错误:

 FATAL EXCEPTION: main
              Process: com.nooriginalthought.yabs, PID: 8640
              android.view.InflateException: Binary XML file line #15: 
              Binary XML file line #15: Error inflating class Android.support.v7.widget.AppCompatTextView
                      Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class Android.support.v7.widget.AppCompatTextView
                      Caused by: java.lang.ClassNotFoundException: Didn't find class "Android.support.v7.widget.AppCompatTextView" on path: D.......

【问题讨论】:

    标签: android android-layout android-studio textview


    【解决方案1】:

    看看这个答案: Autosizing of TextView doesn't work (Android O)
    您必须将该行放在视图之外,如果您在链接中找到答案,请分享问题所在,希望对您有所帮助!

    编辑:我也找到了这个答案:TextView autoSizeTextType is not detecting in xml

    【讨论】:

      【解决方案2】:

      嗯,我现在可以正常工作了,似乎有几个简单的问题需要解决......

      • 首先,最初我的app.iml 中没有包含compile 'com.android.support:appcompat-v7:27.0.2',我只包含support:support
      • 我现在还在AppCompatTextView 元素以及我的布局的根元素中包含了app 命名空间声明。 (不是 100% 确定这是必要的,但无论如何都会增加标记的清晰度)
      • 接下来,当在我的布局中包含 AppCompatTextView 时,我的根 android. 以大写字母“A”开头 - 这导致了通货膨胀崩溃。
      • 最后,我确定我的 AppCompatTextView 元素设置为 width="match_parent",以便它们可以扩展到某个地方。

      将所有这些放在一起就可以让事情发挥作用。

      问题中代码的唯一更改现在看起来是将大写“A”更改为小写,给出:

      <android.support.v7.widget.AppCompatTextView
          xmlns:app="http://schemas.android.com/apk/res-auto"
          app:autoSizeTextType="uniform"
          android:id="@+id/each_pays_amount"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:maxLines="1"
          android:layout_gravity="center_horizontal"
          android:gravity="center_horizontal"
          android:paddingBottom="0dp"
          android:paddingLeft="8dp"
          android:paddingRight="8dp"
          android:paddingTop="0dp"
          android:text="@string/decimal_zeroes"
          android:textAlignment="center"
          android:textColor="#FFFFFF"
          android:textSize="140sp"
          ... />
      

      【讨论】:

      • 猜猜它应该可以工作,即使 AppCompatTextView 声明中没有应用命名空间。我也不必使用 match_parent 作为宽度。用我的用法更新了我的答案。
      【解决方案3】:

      尝试使用 AppCompatTextView(而不是 textview)和 supportLibrary 26.0.1。 compile 'com.android.support:support-v4:26.0.0-beta2' 或更高

      参考https://stackoverflow.com/a/46349091/6616489中的建议

      我用过

      <android.support.v7.widget.AppCompatTextView
      android:id="@+id/text_view_label"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      tools:text="Type"
      android:gravity="center_vertical"
      app:autoSizeTextType="uniform"/>
      

      【讨论】:

      • 我试过这个,实际上使用 v27.0.2 并且每次查看此布局时我的应用程序都会崩溃,并出现以下错误:`FATAL EXCEPTION: main Process: com.nooriginalthought.yabs, PID: 8640 android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class Android.support.v7.widget.AppCompatTextView(我会用最新信息更新问题)
      • 我正在使用前面提到的 AppCompatTextview,它工作正常。这会有帮助吗? faheart.com/789474/…
      • 链接的讨论是关于导致布局膨胀失败的缺少属性。我的失败是因为在“路径”中找不到Android.support.v7.widget.AppCompatTextView 类...
      • 崩溃是由Android.support.v7.widget.AppCompatTextView 中的大写“A”引起的 - 它应该是android.support.v7.widget.AppCompatTextView
      • 是的,错过它感觉有点愚蠢 - 但也希望 lint 捡起它。
      【解决方案4】:

      根据您在问题中提到的页面,要在 XML 中定义默认设置,请使用 android 命名空间并将 autoSizeTextType 属性设置为 none 或 uniform。

      <?xml version="1.0" encoding="utf-8"?>
      <TextView
          android:layout_width="match_parent"
          android:layout_height="200dp"
          **android:autoSizeTextType="uniform"** />
      

      请尝试使用 android:autoSizeTextType="uniform" 而不是 app:autoSizeTextType="uniform" 并告诉我们是否可以解决问题?? ......

      【讨论】:

      • 嗨,这不是一个确定的答案,应该放在 cmets 中。由于您还没有cmets的声誉,因此您将不得不等待。
      • 根据问题的第一行,我需要支持低于 26 的 API 版本。在 android 命名空间中使用 autoSizeTextType 仅适用于 API 26 及更高版本。使用 android 命名空间 /does/ 适用于 API26+ 目标,但在这种情况下,这对我没有帮助。
      猜你喜欢
      • 1970-01-01
      • 2017-09-15
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多