如何自动调整v7.widget.Toolbar中的setTitle()文本

时间:2016-12-15 18:26:43

标签: android android-toolbar

我有这个android.support.v7.widget.Toolbar,而我想要展示的setTitle()文字有时并不完全显示。我寻找某种类型的自动调整大小,例如android-autofittextview用于工具栏,但当然那个人不能在toolbar中工作然后我读到CollapsingToolbarLayout但我不想要那个先进的工具栏。实际上我尝试了它,但文本没有调整大小以显示所有字母。也许我做错了什么但是无论如何:)

有人可以建议我做什么吗?

3 个答案:

答案 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);
                }
            }
        }
    }