【问题标题】:custom component toolbar fragment with onOptionmenu items带有 onOptionmenu 项的自定义组件工具栏片段
【发布时间】:2017-05-02 10:45:00
【问题描述】:

我遇到了一个简单的问题,我知道我做错了什么,我的问题是当我在 MainActivity 中使用 set Toolbar 时以及当我尝试一次在我的 toolBar 的子组件中添加 optionMenu 时(RelativeLayout 在我的情况)大小改变了..

这是我的代码:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/admin_toolbar"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/button_blue"
        app:contentInsetStart="0dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@color/colorPrimaryDark">

            <TextView
                android:id="@+id/admin_toolbar_title"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/zenith"
                android:textColor="@color/white"
                android:visibility="gone" />

            <ImageView
                android:id="@+id/admin_toolbar_icon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:padding="10dp"
                android:src="@drawable/ic_drawer_icon" />

            <ImageView
                android:id="@+id/adminhome_cust_titleimage"
                android:layout_width="@dimen/_100sdp"
                android:layout_height="match_parent"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:scaleType="fitCenter"
                android:src="@drawable/small_app_logo" />

        </RelativeLayout>


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

    <include layout="@layout/content_admin_main" />


</LinearLayout>

片段:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.fragment_admin_home, container, false);
        utils = new Utils(getActivity());
        calendarView = (CompactCalendarView) view.findViewById(R.id.admin_compactcalendar_view);
        setHasOptionsMenu(true);
        toolbar = (Toolbar) getActivity().findViewById(R.id.admin_toolbar);
}
 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.adminhome_profilelogo, menu);
}

如何将我的 imageView 设置在工具的正确中心,正如您在第一张图片中看到的那样。

【问题讨论】:

  • 将 adminhome_cust_titleimage 设置为 admin_toolbar_icon 和 alignParentRight 为真
  • 是的,我尝试使用 rightOf,但中心图像粘在左侧抽屉图像上..
  • 尝试从工具栏 relativeLayout 中删除 TextView
  • 没有仍然无法工作@FerdousAhamed
  • 您可以添加一个额外的 imageView 到工具栏 relativeLayout,而不是使用选项菜单,并为您的配置文件选项右对齐。

标签: android android-relativelayout toolbar


【解决方案1】:

试试这个

        <ImageView
            android:id="@+id/admin_toolbar_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:padding="10dp"
            android:src="@drawable/ic_drawer_icon" />

        <ImageView
            android:id="@+id/adminhome_cust_titleimage"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@+id/admin_toolbar_icon"
            android:layout_alignParentRight="true"
            android:scaleType="fitCenter"
            android:src="@drawable/small_app_logo" />

但无论如何,如果您要添加更多菜单元素,您的图标将从主页按钮的末尾和菜单的开头居中。您也可以删除setHasOptionsMenu 并在您的RelativeLayout 中再添加一个ImageView,您的代码将正常工作。

【讨论】:

  • 您可以通过在开发设置中打开“显示元素边框”来检查您出错的地方
  • 实际上我正在考虑这个解决方案,但是这个工具栏是在我的 mainActivity 中设置的,所以如果我想在其他片段中使用另一个 menuItems,那么我该如何管理这些东西..
  • 是的,但是如果你正在膨胀菜单,工具栏内容会有额外的填充,你不能忽视它
  • 好的意思是不添加ImageView到toolBar子布局我们可以实现这个吗?
  • 您可以在 BaseActivity 和 BaseFragment 中编写逻辑来管理您的自定义菜单容器
【解决方案2】:

您可以在工具栏RelativeLayout 中添加一个额外的ImageView,而不是使用选项menu,并与您的个人资料图标右对齐。

这是一个例子:

<android.support.v7.widget.Toolbar
    android:id="@+id/admin_toolbar"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="@color/colorPrimaryDark"
    app:contentInsetStart="0dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimaryDark">


        <ImageView
            android:id="@+id/admin_toolbar_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:padding="10dp"
            android:src="@drawable/ic_drawer_icon" />

        <ImageView
            android:id="@+id/adminhome_cust_titleimage"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:scaleType="fitCenter"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/profile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:layout_alignParentRight="true"
            android:layout_centerHorizontal="true"
            android:scaleType="fitCenter"
            android:src="@mipmap/ic_launcher" />

    </RelativeLayout>

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

【讨论】:

  • 是的,实际上我正在考虑这个解决方案,但是这个工具栏是在我的 mainActivity 中设置的,所以如果我想在其他片段中使用另一个 menuItems,那么我该如何管理这些东西..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 2015-10-29
  • 2018-06-24
  • 2022-10-17
  • 1970-01-01
相关资源
最近更新 更多