如何根据文本长度以编程方式更改工具栏高度和字体大小

How to change Toolbar height and font size programmatically depending of text length

我有很多不同的 Toolbar 标题,我从以前的 activity 槽意图:

title = getIntent().getStringExtra("title");

然后我将它们设置到我的新 activity 工具栏,如下所示:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle(title);

但是字体太大,只占了一行工具栏:

这是示例标题之一: 将雷达距离传播千米转换为微秒时间和 VICE-VERSA

我想知道有没有办法动态更改 Toolbar 高度和文字大小以适应这个标题?这可以通过编程方式完成吗?

谢谢

试试这样创建自定义工具栏

 <android.support.v7.widget.Toolbar
     android:id="@+id/toolbar"
     android:layout_width="match_parent"
     android:layout_height="?attr/actionBarSize"
     android:background="?attr/colorPrimary"
     app:popupTheme="@style/AppTheme.PopupOverlay">

        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Did you know"
            android:id="@+id/myTitle"
            android:textColor="@android:color/white" />
    </LinearLayout>
</android.support.v7.widget.Toolbar>

并使用 activity 的主题作为 NoActionBar

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
TextView myTitle = (TextView) toolbar.findViewById(R.id.myTitle);

你可以这样试试:

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_top"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/action_bar_bkgnd"
app:theme="@style/ToolBarTheme" >


 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Toolbar Title"
    android:layout_gravity="center"
    android:id="@+id/toolbar_title" />


</android.support.v7.widget.Toolbar>

并在 java 文件中;

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);