当我通过 TextAppearance 间接应用它时,为什么会忽略 `android:maxLines`

Why is `android:maxLines` ignored when I apply it indirectly via `TextAppearance`

为什么当我通过 TextAppearance

间接应用它时 android:maxLines 被忽略
  <style name="TextAppearance.Footer">
    <item name="android:ellipsize">end</item>
    <item name="android:maxLines">1</item>
  </style>

  <style name="FooterButton">
    <item name="android:layout_gravity">center</item>
    <item name="android:textAppearance">@style/TextAppearance.Footer</item>
  </style>

我在 documentation

中看不到 textAppearance 限制

当我直接设置属性时有效:

  <style name="FooterButton">
    <item name="android:layout_gravity">center</item>
    <item name="android:ellipsize">end</item>
    <item name="android:maxLines">1</item>
  </style>

你是对的。该文件没有规定任何限制。但鉴于它是 android 文档,它将缺少很多细节。从源代码中,可以通过 textAppearance.

设置以下属性
    int mTextColorHighlight = 0;
    ColorStateList mTextColor = null;
    ColorStateList mTextColorHint = null;
    ColorStateList mTextColorLink = null;
    int mTextSize = 0;
    String mFontFamily = null;
    Typeface mFontTypeface = null;
    boolean mFontFamilyExplicit = false;
    int mTypefaceIndex = -1;
    int mStyleIndex = -1;
    int mFontWeight = -1;
    boolean mAllCaps = false;
    int mShadowColor = 0;
    float mShadowDx = 0, mShadowDy = 0, mShadowRadius = 0;
    boolean mHasElegant = false;
    boolean mElegant = false;
    boolean mHasFallbackLineSpacing = false;
    boolean mFallbackLineSpacing = false;
    boolean mHasLetterSpacing = false;
    float mLetterSpacing = 0;
    String mFontFeatureSettings = null;

mStyleIndex,但它是文本样式 - bolditalic

您必须通过 xml 中的 styleandroid:maxLines 进行设置。

作为选择的理由,我可以说行数不属于文本外观的标准,而是属于视图的样式。