Как добавить любой View (Button, TextView, Spinner) в качестве пункта меню в ActionBar, используя Java в Android Studio? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу добавить любой View , например Button , TextView или Spinner в мой ActionBar .

Как я могу этого добиться?

Будет достаточно примера, содержащего любое из представлений .

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Если вы хотите добавить представление на панель действий, вы можете использовать панель инструментов, и вы можете добавить представление на панели инструментов. Например:

<android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            // Add whatever you want

</android.support.v7.widget.Toolbar>
0 голосов
/ 07 августа 2020

Я предоставляю пример ActionBar , содержащий Button :

Сначала нам нужно создать menu_button . xml до res / layout :

<?xml version="1.0" encoding="utf-8"?>
<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/button_background"
    android:gravity="center"
    android:textColor="#000000"
    android:textSize="20sp"
    android:textStyle="bold"
    android:textAllCaps="false"/>

Затем нам нужно добавить button_background. xml к res / drawable :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid
        android:color="#4796F6"/>

    <padding
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp" />

    <stroke
        android:width="1.5dp"
        android:color="#FFFFFF" />

    <corners android:radius="15dp" />

</shape>

После этого нам нужно добавить menu. xml к res / menu : ( В этом меню мы собираемся добавить нашу Button , которую мы разработали в menu_button. xml)

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/button"
        android:title=""
        app:showAsAction="always"
        app:actionLayout="@layout/menu_button" />

</menu>

Наконец, из java файл , мы получим пункт меню как Button и напечатаем Toast при нажатии на него.

MainActivity. java:

public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);

        final MenuItem itemButton = menu.findItem(R.id.button);
        button = (Button) itemButton.getActionView();
        button.setText("ActionBar Button");

        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                // do your action here
                Toast.makeText(MainActivity.this, "ActionBar Button was pressed!", Toast.LENGTH_LONG).show();
            }
        });

        return true;

    }

}
...