我想使用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>
我错过了什么吗?实现这种行为的最佳方法是什么?感谢。
答案 0 :(得分:3)
我在尝试对CollapsingToolbarLayout
进行椭圆化时遇到了类似的问题。在对android SDK中的TitleTextAppearance
处理位置进行调查后,似乎只有少数文本外观指令得到尊重:
textColor
,textSize
,shadowColor
,shadowDy
,shadowDx
,shadowRadius
和typeface
。
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指令,你将不得不实施自己的CollapsingToolbarLayout
和CollapsingTextHelper
类。
CollapsingTextHelper
课程的完整来源:https://android.googlesource.com/platform/frameworks/support/+/android-7.1.1_r23/design/src/android/support/design/widget/CollapsingTextHelper.java