如何/是否可以使标题跨越工具栏的整个宽度?目前文本被菜单项切断。
我尝试使用不同的xml属性,例如paddingEnd
,contentInsetRight
,titleMarginEnd
但没有结果。
谢谢! :)
答案 0 :(得分:1)
通常,标题总是必须适合工具栏的菜单&操作项目,以便在工具栏折叠时移动标题。
一个简单的方法是在工具栏中放置TextView并将工具栏的背景设置为透明。另请注意我是如何将高程设置为LinearLayout并在工具栏上禁用它的(尽管截图中的阴影因为我在KitKat设备上运行而无法显示)。
<!-- App Bar container -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/blue"
android:elevation="2dp"
android:orientation="vertical">
<!-- App Bar -->
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:elevation="0dp"
android:gravity="center"
android:minHeight="?attr/actionBarSize">
</android.support.v7.widget.Toolbar>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:text="Title below the AppBar itself."
android:textColor="#fff"
android:textSize="20sp"/>
</LinearLayout>
这给出了以下结果:
这可能看起来像两个额外的视图,但请记住,如果您没有为ToolBar设置标题,那么没有TextView在那里膨胀。净结果仍然是一个额外的视图。
答案 1 :(得分:0)
一个hackish解决方案
private void fixToolbarTitleBug()
{
fixToolbarTitleBug("mTitleTextView");
}
private void fixToolbarTitleBug(String fieldName)
{
try
{
Field field=Toolbar.class.getDeclaredField(fieldName);
field.setAccessible(true);
TextView titleTextView=(TextView) field.get(toolbar);
Toolbar.LayoutParams params=(Toolbar.LayoutParams) titleTextView.getLayoutParams();
params.width=ScreenSize.width()*3/4; //replace this
titleTextView.setLayoutParams(params);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
用法:您必须在setTitle之后调用它,否则它将无法工作,因为在您第一次设置工具栏标题后,mTitleTextView被添加到工具栏中。
supportActionBar.setTitle(title);
fixToolbarTitleBug();
如果你有一个带有标题和subtile的工具栏,你也可以使用
private void fixToolbarSubtitleBug()
{
fixToolbarTitleBug("mSubtitleTextView");
}
用法:
supportActionBar.setSubtitle(subtitle);
fixToolbarSubtitleBug();