我有这个android.support.v7.widget.Toolbar
,而我想要展示的setTitle()
文字有时并不完全显示。我寻找某种类型的自动调整大小,例如android-autofittextview用于工具栏,但当然那个人不能在toolbar
中工作然后我读到CollapsingToolbarLayout但我不想要那个先进的工具栏。实际上我尝试了它,但文本没有调整大小以显示所有字母。也许我做错了什么但是无论如何:)
有人可以建议我做什么吗?
答案 0 :(得分:1)
您可以将此行添加到工具栏
app:titleTextAppearance="@style/styleX"
你的工具栏就像这样
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:gravity="center"
app:titleTextAppearance="@style/styleX"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
这是风格
<style name="styleX" parent="@style/Base.TextAppearance.AppCompat.Title">
<item name="android:textSize">20sp</item>
</style>
如果您想使用dimens.xml
,可以动态更改20sp答案 1 :(得分:0)
val toolbarText = binding.toolbar.getChildAt(1) as TextView
toolbarText.setHorizontallyScrolling(false)
toolbarText.gravity = Gravity.START or Gravity.CENTER_VERTICAL
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(toolbarText, 1, 20, 1, TypedValue.COMPLEX_UNIT_SP)
如果您有(没有)向上操作,子索引可能会有所不同。
答案 2 :(得分:0)
为所有 Toolbar TextViews(标题和副标题)设置 AutoSize
public static void setToolbarTextAutoSize(Toolbar toolbar) {
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if (view instanceof TextView) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
((TextView) view).setHorizontallyScrolling(false);
((TextView) view).setAutoSizeTextTypeWithDefaults(TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM);
}
}
}
}