Saya ingin menggunakan ToolBar
bukan ActionBar
, tetapi tidak menunjukkan menu di toolbar !!! Saya ingin mengatur menu seperti tombol Refresh atau Pengaturan masuk ActionBar
.
Kode Toolbar.xml:
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:navigationContentDescription="@string/abc_action_bar_up_description"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="Main Page"
android:gravity="center"/>
Kode MainPage.java:
public class MainPage extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page);
toolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle("Main Page");
}
toolbar.setSubtitle("Test Subtitle");
toolbar.inflateMenu(R.menu.main_manu);
}
}
kode main_menu.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
android:id="@+id/menu_main_setting"
android:icon="@drawable/ic_settings"
android:orderInCategory="100"
app:showAsAction="always"
android:actionLayout="@layout/toolbar"
android:title="Setting" />
<item
android:id="@+id/menu_main_setting2"
android:icon="@drawable/ic_settings"
android:orderInCategory="200"
app:showAsAction="always"
android:actionLayout="@layout/toolbar"
android:title="Setting" />
</menu>
Bagaimana cara memperbaiki masalah ini dan menampilkan menu Toolbar
? terima kasih semua sayangku <3
Android Studio
dan periksa. 'ToolBar' tidak boleh merupakan entitas independen.Jawaban:
cukup timpa onCreateOptionsMenu seperti ini di MainPage.java Anda
sumber
Jangan gunakan setSupportActionBar (toolbar)
Saya tidak tahu mengapa tetapi ini berhasil untuk saya.
Untuk item menu klik lakukan ini
sumber
Berikut adalah jawaban yang lebih lengkap sebagai referensi untuk pengunjung selanjutnya. Saya biasanya menggunakan toolbar dukungan tetapi berfungsi dengan baik.
1. Buat menu xml
Ini akan masuk
res/menu/main_menu
.res
folder dan pilih New> Android Resource File .main_menu
nama File.Tempel konten berikut sebagai permulaan.
<?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 android:id="@+id/action_add" android:icon="@drawable/ic_add" app:showAsAction="ifRoom" android:title="Add"> </item> <item android:id="@+id/action_settings" app:showAsAction="never" android:title="Settings"> </item> </menu>
Anda dapat mengklik kanan
res
dan memilih Aset gambar baru untuk membuat fileic_add
ikon.2. Tingkatkan menu
Dalam aktivitas Anda, tambahkan metode berikut.
3. Tangani klik menu
Juga di Aktivitas Anda, tambahkan metode berikut:
Bacaan lebih lanjut
sumber
Anda perlu mengganti kode ini dalam Aktivitas Anda:
dan setel bilah alat Anda seperti ini:
sumber
Anda juga membutuhkan ini, untuk menerapkan beberapa tindakan ke setiap opsi menu.
sumber
Meskipun saya setuju dengan jawaban ini, karena memiliki lebih sedikit baris kode dan berfungsi:
Cara mengatur menu ke Toolbar di Android
Saran saya adalah selalu memulai proyek apa pun menggunakan Android Studio Wizard. Dalam kode itu Anda akan menemukan beberapa gaya: -
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
dan penggunaannya adalah:
<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="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout>
Karena
no action bar theme
dideklarasikan distyles.xml
, yang diterapkan keMain Activity
dalamAndroidManifest.xml
, tidak ada pengecualian, jadi Anda harus memeriksanya di sana.<activity android:name=".MainActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Toolbar
bukan entitas independen, itu selalu merupakan tampilan anakAppBarLayout
yang lagi-lagi adalah anak dariCoordinatorLayout
.KEDUA:
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
DAN:
Cara mengatur menu ke Toolbar di Android
AKAN BEKERJA.
Selamat Coding :-)
sumber
Dalam aktivitas Anda, timpa metode ini.
Ini akan meningkatkan menu Anda di bawah ini:
<?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 android:id="@+id/menu_main_setting" android:icon="@drawable/ic_settings" android:orderInCategory="100" app:showAsAction="always" android:actionLayout="@layout/toolbar" android:title="Setting" /> <item android:id="@+id/menu_main_setting2" android:icon="@drawable/ic_settings" android:orderInCategory="200" app:showAsAction="always" android:actionLayout="@layout/toolbar" android:title="Setting" /> </menu>
sumber
Anda masih dapat menggunakan jawaban yang disediakan menggunakan Toolbar.inflateMenu bahkan saat menggunakan setSupportActionBar (toolbar).
Saya memiliki skenario di mana saya harus memindahkan fungsionalitas pengaturan bilah alat ke kelas terpisah di luar aktivitas yang tidak dengan sendirinya mengetahui acara onCreateOptionsMenu.
Jadi, untuk menerapkan ini, yang harus saya lakukan hanyalah menunggu Toolbar digambar sebelum memanggil inflateMenu dengan melakukan hal berikut:
Mungkin tidak dianggap sangat bersih tetapi masih menyelesaikan pekerjaan.
sumber
Dalam kasus saya, saya menggunakan AppBarLayout dengan CollapsingToolbarLayout dan menu selalu digulir keluar dari layar, saya memecahkan masalah saya dengan mengalihkan android: actionLayout dalam XML menu ke id toolbar. Saya harap ini dapat membantu orang-orang dalam situasi yang sama!
activity_main.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:fab="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activities.MainScreenActivity" android:screenOrientation="portrait"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="300dp" app:elevation="0dp" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingBar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="exitUntilCollapsed|scroll" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="48dp" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:elevation="0dp" app:popupTheme="@style/AppTheme.PopupOverlay" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>
main_menu.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 android:id="@+id/logoutMenu" android:orderInCategory="100" android:title="@string/log_out" app:showAsAction="never" android:actionLayout="@id/toolbar"/> <item android:id="@+id/sortMenu" android:orderInCategory="100" android:title="@string/sort" app:showAsAction="never"/> </menu>
sumber
Dalam XML tambahkan satu baris di dalamnya
<Toolbar/>
<com.google.android.material.appbar.MaterialToolbar app:menu="@menu/main_menu"/>
Dalam file java, ganti ini:
dengan ini:
sumber
Memperbaiki sederhana untuk ini terbenam
showAsAction
kealways
dalammenu.xml
di res / menu<?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 android:id="@+id/add_alarm" android:icon="@drawable/ic_action_name" android:orderInCategory="100" android:title="Add" app:showAsAction="always" android:visible="true"/> </menu>
sumber
res / layout / drawer_menu
<?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 android:id="@+id/action_drawer" android:title="@string/app_name" android:icon="@drawable/ic_menu_black_24dp" app:showAsAction="always"/> </menu>
toolbar.xml
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" app:titleTextColor="@android:color/white" app:titleTextAppearance="@style/TextAppearance.Widget.Event.Toolbar.Title"> <TextView android:id="@+id/toolbar_title" android:layout_gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/app_name" android:textColor="@android:color/white" style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" /> </androidx.appcompat.widget.Toolbar>
sumber
Nah, Anda perlu menyetel bilah tindakan dukungan setSupportActionBar (); dan berikan variabel Anda, seperti:
setSupportActionBar(toolbar);
sumber