使用ellipsize选框折叠ToolToolbarLayout标题

时间:2016-06-20 07:06:03

标签: android material-design

我想使用android的CollapsingToolbarLayout但是有一个标题,如果布局被折叠,则水平滚动而不是被截断。 我尝试使用以下样式调用setCollapsedTitleTextAppearance,但这对选取框没有任何影响(仅限文本颜色和大小)。

<style name="TitleText" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">20sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@color/material_blue_600</item>
    <item name="android:ellipsize">marquee</item>
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:singleLine">true</item>
    <item name="android:marqueeRepeatLimit">marquee_forever</item>
</style>

我错过了什么吗?实现这种行为的最佳方法是什么?感谢。

1 个答案:

答案 0 :(得分:3)

我在尝试对CollapsingToolbarLayout进行椭圆化时遇到了类似的问题。在对android SDK中的TitleTextAppearance处理位置进行调查后,似乎只有少数文本外观指令得到尊重:

textColortextSizeshadowColorshadowDyshadowDxshadowRadiustypeface

CollapsingToolbarLayout班级使用CollapsingTextHelper来应用文字外观,请参阅以下相关方法:

void setCollapsedTextAppearance(int resId) {
    TintTypedArray a = TintTypedArray.obtainStyledAttributes(mView.getContext(), resId,
            android.support.v7.appcompat.R.styleable.TextAppearance);
    if (a.hasValue(android.support.v7.appcompat.R.styleable.TextAppearance_android_textColor)) {
        mCollapsedTextColor = a.getColorStateList(
                android.support.v7.appcompat.R.styleable.TextAppearance_android_textColor);
    }
    if (a.hasValue(android.support.v7.appcompat.R.styleable.TextAppearance_android_textSize)) {
        mCollapsedTextSize = a.getDimensionPixelSize(
                android.support.v7.appcompat.R.styleable.TextAppearance_android_textSize,
                (int) mCollapsedTextSize);
    }
    mCollapsedShadowColor = a.getInt(
            android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowColor, 0);
    mCollapsedShadowDx = a.getFloat(
            android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDx, 0);
    mCollapsedShadowDy = a.getFloat(
            android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDy, 0);
    mCollapsedShadowRadius = a.getFloat(
            android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowRadius, 0);
    a.recycle();
    if (Build.VERSION.SDK_INT >= 16) {
        mCollapsedTypeface = readFontFamilyTypeface(resId);
    }
    recalculate();
}

正如Lovis所说,如果你想要尊重ellipsize指令,你将不得不实施自己的CollapsingToolbarLayoutCollapsingTextHelper类。

CollapsingTextHelper课程的完整来源:https://android.googlesource.com/platform/frameworks/support/+/android-7.1.1_r23/design/src/android/support/design/widget/CollapsingTextHelper.java