Bu derste menu oluşturma konusunu anlatmaya çalıştım.
Oluşturacağımız menuyu toolbarı bir actionbar olarak kullanarak veya tek başına kullanarak oluşturabiliriz ve tıklanma olaylarını ele alabiliriz.
Eskiden actionbar olarak bilinen yapıyı artık toolbar olarak kullanıyoruz. Toolbar’ı actionbar olarak kullanabildiğimiz gibi başlı başlıca direk olarak da kullanabiliyoruz. Bunun için setActionBar ve setSupportActionBar methodlarını kullanırız.
Bu methodlardan birinci api21 ve sonrası diğeri ise önceki versiyonlarla uyumlu çalışması için kullanılır(Api 7’ye kadar).
Toolbar içinde birden fazla view öğesi olabilir. Çünkü toolbar aslında bir viewgroup’tan üretilir. Bu sayede illa uygulamanın başında olması gerekmez. Normal bir viewgroup gibi uygulamamızın herhangi bir yerinde toolbarı kullanabiliriz.
Toolbarımızda navigation icon’u(Geri gelmek için), uygulama iconu, başlık, altbaşlık, menu iconları ve overflow menu denilen üç noktaüstüste iconu bulunabilir.
Toolbar kullanmak için uygulamamızın styles.xmlinde bulunan temanın parentına : Theme.Appcompat.Light.NoActionBar’ı yazarız böylece default actionbardan kurtuluruz. Daha sonra toolbar öğesini layoutumuzda tanımlarız. Böylece toolbarımız kullanıcıya gözükür.
Toolbarda işlem yapmak için java kodlarıyla aynı bir view öğesini ele aldığımız gibi ele alır ve ilgili özelliklerle donatırız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
public class MainActivity extends AppCompatActivity { Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){ toolbar.setElevation(5f); } */ toolbar= (Toolbar) findViewById(R.id.toolbar); /* setSupportActionBar(toolbar); getSupportActionBar().setTitle("Merhaba"); getSupportActionBar().setSubtitle("Alt başlık");*/ toolbar.setTitle("Merhaba"); toolbar.setSubtitle("Alt başlık"); toolbar.inflateMenu(R.menu.menu_main); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { String mesaj=""; switch (item.getItemId()){ case R.id.ara: mesaj="ARA TIKLANDI"; break; case R.id.sil: mesaj="SİL TIKLANDI"; break; case R.id.duzenle: mesaj="DÜZENLE TIKLANDI"; break; case R.id.ayarlar: mesaj="AYARLAR TIKLANDI"; break; case R.id.cikis: mesaj="ÇIKIŞ TIKLANDI"; break; } Toast.makeText(MainActivity.this, mesaj, Toast.LENGTH_LONG).show(); return true; } }); } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.emrealtunbilek.toolbarmaterial.MainActivity"> <include android:id="@+id/toolbar" layout="@layout/toolbar"></include> </RelativeLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/colorPrimary" app:theme="@style/ToolBarTheme" app:popupTheme="@style/PopopMenu" android:minHeight="?attr/actionBarSize" > </android.support.v7.widget.Toolbar> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<?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/sil" android:title="SİL" android:icon="@drawable/sil" android:orderInCategory="100" app:showAsAction="always" > </item> <item android:id="@+id/ara" android:title="ARA" android:icon="@drawable/ara" android:orderInCategory="100" app:showAsAction="always" > </item> <item android:id="@+id/ayarlar" android:title="Ayarlar" android:orderInCategory="100" app:showAsAction="never" > </item> <item android:id="@+id/duzenle" android:title="Düzenle" android:orderInCategory="100" app:showAsAction="never" > </item> <item android:id="@+id/cikis" android:title="Çıkış" android:orderInCategory="100" app:showAsAction="never" > </item> </menu> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<resources> <style name="MyMaterialTheme" parent="ParentMaterialTheme"> </style> <!-- Base application theme. --> <style name="ParentMaterialTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <!-- Toolbar rengi.500 seçilir --> <item name="colorPrimary">@color/colorPrimary</item> <!-- Statusbar rengi. 700 seçilir --> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!-- ikinci ana renk. Ayrıca checkbox, radio button da da kullanılır --> <item name="colorAccent">@color/colorAccent</item> <!-- Butonların rengi.--> <item name="colorButtonNormal">@color/colorButtonNormal</item> <!-- ripple efektinin rengi rengi. --> <item name="colorControlHighlight">@color/colorControlHighlight</item> <!-- Edittext altçizgi rengi, radio button,switch ve checkbox activated rengi;--> <item name="colorControlActivated">@color/colorControlActivated</item> </style> <style name="ToolBarTheme" parent="ThemeOverlay.AppCompat.Light"> <item name="android:textColorPrimary">@android:color/white</item> <item name="android:textColorSecondary">@android:color/white</item> </style> <style name="PopopMenu" parent="ThemeOverlay.AppCompat.Dark"> </style> </resources> |
Merhabalar Emre Bey, Öncelikle hazırlamış olduğunuz videolarınız ve emeğiniz için teşekkür ederim.Uzun zamandan sonra Türkçe olarak detaylı bir şekilde anlatılan neredeyse ilk Android Video’su diyebilirim.Ben videolarınızda gösterdiğiniz ve herhalde sizin kullandığınız slide şeklindeki dökümanı (İngilizce Döküman) nereden bulabiliriz onu soracaktım.Herhangi bir yayın evinemi ait yada bir kursa mı merak ettim.Eğer sakıncası yok ise söyleme şansınız varmıdır acaba.
merhaba acıkcası netten buluyorum genelde konu ile ilgili resimleri slaytları malesef elimde yok suan. Ekran goruntüsü alıp kullanabilirsin:)
Merhaba;
Öncelikle yayınlamış olduğunuz dersler, bu web sitesi için teşekkür ederim. Bu bilgilerin herkese ışık tutacağı kesin.
Bu menüyü oluşturmak için hemen hemen her yerde;
getMenuInflater().inflate(R.menu.menumain,Menu); ifadesi ile xml’i çevirirken,
Yukarıda
toolbar.inflateMenu(R.menu.menu_main); kullanmışsınız.
2 gündür uğraşıyorum, kodları inceleyince bu metodu ilk defa gördüm, bunu uygulayınca oluşturabildim.
Şimdide butonların görünürlüğü için “Always” yerine “ifRoom” seçmelisiniz diyor. Butonları bir türlü görünür yapamadım.
Bu kodlar ara ara değişiyor, muhtemelen. Böyle sorunlarla karşılaşmamak için Örn. sürekli api 17 sonrasını mı seçmek lazım. Ben api23 kullanıyordum. (Api değiştirerekte denedim muhtemelen.)
Anroid ile uğraşmak hoşuma gidiyor ama bazende çözümü böyle bulamayınca sıkılıyorum.
Sizce ne yapmalıyım? Öneri ve tavsiyelerinizi paylaşırsanız memnun olurum.
İyi Çalışmalar.