How to display both icon and title of action inside ActionBar?

前端 未结 10 1984
庸人自扰
庸人自扰 2020-11-29 18:08

I need to display both icon and title of action inside ActionBar.

I\'ve tried \"withText\" option, but it has no

相关标签:
10条回答
  • 2020-11-29 18:43

    Using app:showAsAction="always|withText". I am using Android 4.1.1, but it should applicable anyway. Mine look like below

    <item
            android:id="@+id/action_sent_current_data"
            android:icon="@drawable/ic_upload_cloud"
            android:orderInCategory="100"
            android:title="@string/action_sent_current_data"
            app:showAsAction="always|withText"/>
    
    0 讨论(0)
  • 2020-11-29 18:48

    You can add button in toolbar

    <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            app:title="title">
    
            <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginRight="16dp"
                android:background="@color/transparent"
                android:drawableRight="@drawable/ic_your_icon"
                android:drawableTint="@drawable/btn_selector"
                android:text="@string/sort_by_credit"
                android:textColor="@drawable/btn_selector"
                />
    
        </android.support.v7.widget.Toolbar>
    

    create file btn_selector.xml in drawable

    <?xml version="1.0" encoding="utf-8" ?>
    

    <selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_selected="true"
        android:color="@color/white"
        />
    <item
        android:color="@color/white_30_opacity"
        />
    

    java:

    private boolean isSelect = false;

    OnClickListener for button:

    private void myClick() {
        if (!isSelect) {
           //**your code**//
            isSelect = true;
        } else {//**your code**//
            isSelect = false;
        }
        sort.setSelected(isSelect);
    }
    
    0 讨论(0)
  • 2020-11-29 18:49

    'always|withText' will work if there is sufficient room, otherwise it will only place icon. You can test it on your phone with rotation.

    <item android:id="@id/menu_item"
    android:title="text"
    android:icon="@drawable/drawable_resource_name"
    android:showAsAction="always|withText" />
    
    0 讨论(0)
  • 2020-11-29 18:49

    If any1 in 2017 is wondering how to do this programmatically, there is a way that i don't see in the answers

    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    
    0 讨论(0)
  • 2020-11-29 18:50

    The solution I find is to use custom action Layout: Here is XML for menu.

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:Eventapp="http://schemas.android.com/apk/res-auto">
    <!-- This is a comment. -->
        <item
            android:id="@+id/action_create"
            android:actionLayout="@layout/action_view_details_layout"
            android:orderInCategory="50"
            android:showAsAction = "always"/>
    </menu>
    

    The Layout is

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:gravity="center"
        android:text="@string/create"/>
    
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:gravity="center"
        android:src="@drawable/ic_action_v"/>
    
    </LinearLayout>
    

    this will show the icon and the text together.

    To get the clickitem the the fragment or activity:

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
    {
        //super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_details_fragment, menu);
        View view = menu.findItem(R.id.action_create).getActionView();
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }
    
    0 讨论(0)
  • 2020-11-29 18:53

    What worked for me was using 'always|withText'. If you have many menus, consider using 'ifRoom' instead of 'always'.

    <item android:id="@id/resource_name"
    android:title="text"
    android:icon="@drawable/drawable_resource_name"
    android:showAsAction="always|withText" />
    
    0 讨论(0)
提交回复
热议问题