android - 工具栏图标的圆形背景

标签 android android-layout

有没有办法为工具栏图标添加背景,
我想实现这个设计
enter image description here

或者还有另一种方法可以做到这一点。因为它有溢出图标

最佳答案

完整引用代码
这是结果enter image description here

  • 在您的应用主题或 Activity 样式中添加以下内容以使其成为 NoActionBar Activity
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    
  • 在您的 activity.xml 中添加工具栏并根据需要自定义 View
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.Toolbar 
     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/toolbar"
     android:layout_width="match_parent"
     android:layout_height="?attr/actionBarSize"
     android:background="@color/colorPrimary"
     android:theme="@style/AppTheme"
     app:layout_collapseMode="parallax"
     app:popupTheme="@style/AppTheme">                     
    
    <RelativeLayout
        android:layout_width ="match_parent"
        android:layout_height="match_parent">
        <ImageButton
            android:id="@+id/back_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:background="@drawable/cir_shape"
            android:onClick="clickBack"
            android:padding="6dp"
            android:visibility="visible"
            app:srcCompat="@drawable/ic_arrow_back_black_24dp"
            tools:ignore="VectorDrawableCompat" />
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@drawable/rect_shape"
            android:gravity="center"
            android:orientation="horizontal"
            android:padding="3dp">
    
            <ImageView
                android:id="@+id/app_bar_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="centerInside"
                android:visibility="visible"
                android:layout_marginRight="3dp"
                app:srcCompat="@drawable/ic_visibility_black_24dp"
                android:layout_marginEnd="3dp" />
    
            <TextView
                android:id="@+id/app_bar_text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="1.3K"
                android:textAllCaps="false"
                android:textColor="@color/whiteColor"
                android:textSize="18sp"
                android:textStyle="bold"
                android:visibility="visible" />
    
    
        </LinearLayout>
    </RelativeLayout>
    


  • 3.添加支持操作栏为toolbarMainActivity.javaOnCreate()
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null) {
            setSupportActionBar(toolbar);
        }
    

    4.circle_shape.xml在arrow_back drawable的drawable中
     <?xml version="1.0" encoding="utf-8"?>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#95686566" />
        </shape>
    

    5.rectangle_shape.xml在可绘制的
      <?xml version="1.0" encoding="utf-8"?>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid android:color="#95686566" />
        </shape>
    

    6.自定义3个点(溢出图标)添加
    <item  name="actionOverflowButtonStyle">@style/ThreeDotsStyle</item>
    

    在你的style.xml主旋律
         <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->        
        <item name="actionOverflowButtonStyle">@style/ThreeDotsStyle</item>
    </style>
    

    并创建它的主题
     <style name="ThreeDotsStyle" parent="Widget.AppCompat.ActionButton.Overflow">
            <item name="android:src">@drawable/my_threedots_menu</item>
        </style>
    

    7.my_threedots_menu.xml
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="oval">
                <solid android:color="#95686566" />
                <padding
                    android:bottom="5dp"
                    android:left="5dp"
                    android:right="5dp"
                    android:top="5dp" />
            </shape>
    
        </item>
        <item
            android:drawable="@drawable/ic_menu_dots"
            android:gravity="center" />
    
    </layer-list>
    

    8.给你的菜单充气
     @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.my_menu, menu);
            return true;
        }
    

    关于android - 工具栏图标的圆形背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54178756/

    相关文章:

    android-layout - 如何获取android中布局的底部?

    Eclipse : Strange Error Message 中的安卓开发

    android - com.android.nfc_extras 的文档?

    java - Android 客户端应用程序(可能通过 USB 使用 ADB)

    c# - 在 Xamarin 中实现计步器

    android - Android 中内容不在屏幕上

    java - 方法不会覆盖其父类(super class)中的方法 - fragment 中的操作按钮

    java - Android:带有 EditText 的 AlertDialog 不会自动显示键盘

    android - 通过形状资源文件设置圆角的 ConstraintLayout 不起作用

    android - 默认的 Android Studio 抽屉导航图标