工具栏宽度没有菜单按钮

时间:2018-05-15 11:27:46

标签: android android-toolbar

我用菜单和工具栏创建了应用程序。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        android:id="@+id/app_bar_menu_coord_layout_included"
        layout="@layout/app_bar_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/nav_header_menu"
        app:menu="@menu/activity_menu_drawer" />

</android.support.v4.widget.DrawerLayout>

工具栏(上面的 app_bar_menu_coord_layout_included ):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/app_bar_menu_coord_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:fitsSystemWindows="true"
    android:tag="app_bar_menu_coord_layout"
    tools:context="com.magnifi.pennantrace.MenuActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

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

            <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/relativelayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <!--first-->
                <TextView
                    android:id="@+id/toolbar_div_rank"
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:gravity="center"
                    android:text="4th Place"
                    android:textStyle="bold"
                    app:layout_constraintBottom_toTopOf="@id/guidelineToolbarV1"
                    app:layout_constraintEnd_toStartOf="@+id/guidelineToolbarH1"
                    app:layout_constraintLeft_toLeftOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                ...

            </android.support.constraint.ConstraintLayout>
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:id="@+id/content_frame"/>
</LinearLayout>

现在我想根据屏幕尺寸调整工具栏元素的文字大小。我所做的是将工具栏宽度设置为100%并将textview的其余文本大小设置为适合所需的矩形(例如宽度的6%和高度的100%)。

但它似乎无法正常工作。 我测试过屏幕尺寸320高度和480宽度:

example

正如你在图片上看到的那样,首先它的宽度是480,正如我注意到文本调整不起作用,看看最后一个文本37M,它应该适合一行。我认为菜单按钮(图像中的红色矩形)占据了一席之地。没有菜单按钮,识别工具栏实际宽度的最佳方法是什么?

编辑1: 我已尝试添加到 app_bar_menu_coord_layout_included 这个:

  

机器人:layout_marginLeft = “ - 64dp”

这是正确调整文本大小的结果。但我不想摆脱菜单按钮。相反,我希望没有菜单按钮获得正确的工具栏大小。

example 2

1 个答案:

答案 0 :(得分:0)

Android为我们提供了轻松实现组件的组件。不是花时间来定制它。为什么不制作自定义工具栏,而不是在管理默认工具栏时浪费时间。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    style="@style/styleToolbar">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/iv_back"
            style="@style/styleToolbarIcon"
            android:src="@drawable/ic_back" />

        <TextView
            android:id="@+id/headerTitle"
            style="@style/styleToolbarText"
            android:text="@string/app_name" />

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

要在res&gt; values&gt; styles.xml中添加一些样式。

<style name="styleToolbar" parent="Widget.AppCompat.Toolbar">
    <item name="android:layout_width">match_parent</item>
    <item name="android:background">@color/colorWhite</item>
    <item name="android:layout_height">?attr/actionBarSize</item>
    <item name="colorControlNormal">@color/colorWhite</item>
    <item name="android:textColorPrimary">@color/colorWhite</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="theme">@style/MyToolbarTheme</item>
    <item name="contentInsetEnd">0dp</item>
    <item name="contentInsetLeft">0dp</item>
    <item name="contentInsetRight">0dp</item>
    <item name="contentInsetStart">0dp</item>
    <item name="contentInsetStartWithNavigation">0dp</item>
</style>

<style name="MyToolbarTheme">
    <!-- Used to tint the back arrow, menu and spinner arrow -->
    <item name="colorControlNormal">#FFF</item>
</style>

<style name="styleToolbarIcon">
    <item name="android:layout_width">?attr/actionBarSize</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:contentDescription">@string/app_name</item>
    <item name="android:padding">@dimen/toolbar_icon_padding</item>
    <item name="android:gravity">center</item>
</style>

<style name="styleToolbarText">
    <item name="android:layout_width">0dp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:gravity">left|center_vertical</item>
    <item name="android:singleLine">true</item>
    <item name="android:textColor">#252525</item>
    <item name="android:paddingLeft">10dp</item>
    <item name="android:scrollHorizontally">true</item>
</style>

您应该根据需要自定义工具栏布局。因此,您将拥有其大小的所有控件。