Uygulamanın üst çubuğu uygulama pencerenizin üst kısmı boyunca tutarlı bir yer sağlar. bilgileri ve işlemleri görüntüleyebilirsiniz.
Uygulama çubuğunun sahipliği, uygulamanızın ihtiyaçlarına göre değişir. Zaman
parça kullanarak, uygulama çubuğu bir
Sahibi ActionBar
ana makine etkinliği veya parçanızın düzenindeki bir araç çubuğu tarafından bulunabilir.
Tüm ekranlarınızda, her zaman üst kısımda ve ekranın genişliğini kaplayorsa, Google Play Müzik'teki işlem çubuğunda görünür. Tema uygulama çubukları kullanmak, tutarlı bir görünüm sağlıyor ve seçenek menüleri ve Yukarı düğmesi.
Üzerinde daha fazla denetime sahip olmak istiyorsanız parça tarafından barındırılan uygulama çubuğunun boyutu, yerleşimi ve animasyonu ekranları. Örneğin, daraltılabilen bir uygulama çubuğuna veya ekranın yalnızca yarısını kaplar ve dikey olarak ortalanır.
Farklı durumlar, şişirme gibi konular için farklı yaklaşımlar gerektirir ve kullanıcı etkileşimine yanıt verme hakkında bilgi edinebilirsiniz. Farklı reklam öğelerini anlama ve uygulamanız için en iyi seçeneği kullanmak size zaman kazandırır uygulamanızın düzgün çalıştığından emin olun.
Bu konudaki örneklerde, şunları içeren bir ExampleFragment
referans alınmıştır:
profili oluşturabilirsiniz. Parça aşağıdakileri şişirir
Uygulama çubuğunda XML tanımlı menü:
<!-- sample_menu.xml -->
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_settings"
android:title="@string/settings"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_done"
android:icon="@drawable/ic_done"
android:title="@string/done"
app:showAsAction="ifRoom|withText"/>
</menu>
Menüde iki seçenek bulunur: biri profil ekranına gitmek için. ve yapılan profil değişikliklerini kaydetmek için birini tıklayın.
Etkinliğe ait uygulama çubuğu
Uygulama çubuğu, en yaygın olarak düzenleyen kullanıcıya aittir. Uygulama çubuğu bir etkinliğe aitse, parçalar uygulama çubuğuyla etkileşimde bulunabilir parça oluşturma sırasında çağrılan çerçeve yöntemlerini geçersiz kılarak.
Etkinlikle kaydol
Uygulama çubuğu parçasınızın katıldığını sisteme bildirmeniz gerekir
seçenekleri vardır. Bunun için şu numarayı arayın:
setHasOptionsMenu(true)
aşağıda gösterildiği gibi, parçanızın onCreate(Bundle)
yönteminde
örnek:
Kotlin
class ExampleFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setHasOptionsMenu(true) } }
Java
public class ExampleFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } }
setHasOptionsMenu(true)
, sisteme parçanızın
menüyle ilgili geri çağırmalar almak istiyor. Menüyle alakalı bir kullanıcı
tıklama gibi bir etkinlik gerçekleştiğinde etkinlik işleme yöntemi,
parçada çağrılmadan önce ilk olarak etkinliği çağırır.
Ancak uygulama mantığınızda bu sıraya güvenmeyin. Aynıysa etkinlik birden fazla parça barındırıyor, her parça menü sağlayabilir seçenekleri sunar. Bu durumda geri arama sırası, parçaların eklendiği zaman gösterilir.
Menüyü şişir
Menünüzü uygulama çubuğunun seçenekler menüsüyle birleştirmek için geçersiz kıl
onCreateOptionsMenu()
oluşturmanız gerekir. Bu yöntem, geçerli uygulama çubuğu menüsünü ve bir
Parametre olarak MenuInflater
. Tekliflerinizi otomatikleştirmek ve optimize etmek için
parçanızın menüsünün bir örneğini oluşturmak için menüyü şişirin ve ardından
aşağıdaki örnekte gösterildiği gibi geçerli menüye ekleyin:
Kotlin
class ExampleFragment : Fragment() { ... override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.sample_menu, menu) } }
Java
public class ExampleFragment extends Fragment { ... @Override public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { inflater.inflate(R.menu.sample_menu, menu); } }
Şekil 2'de güncellenen menü gösterilmektedir.
Tıklama etkinliklerini yönetme
Seçenekler menüsünde katılan her etkinlik ve parça,
ve dokunmalara yanıt verebilir. Parçanın
onOptionsItemSelected()
seçilen menü öğesini parametre olarak alır ve bir boole değeri döndürür
değeri gösterilir. Bir
etkinlik veya parça, onOptionsItemSelected()
öğesinden true
döndürür, hayır
diğer katılımcı parçalar geri çağırmayı alır.
onOptionsItemSelected()
uygulamanızda switch
kullanın
itemId
ifadesini içeren bir metin görürsünüz. Seçilen öğe
sizindir, dokunmaya uygun şekilde hareket edin ve belirtmek için true
konumuna geri dönün
emin olun. Seçilen öğe
super
uygulamasını çağırın. Varsayılan olarak, super
uygulama, menü işlemenin devam etmesine izin vermek için false
değerini döndürür.
Kotlin
class ExampleFragment : Fragment() { ... override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_settings -> { // Navigate to settings screen. true } R.id.action_done -> { // Save profile changes. true } else -> super.onOptionsItemSelected(item) } } }
Java
public class ExampleFragment extends Fragment { ... @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: { // Navigate to settings screen. return true; } case R.id.action_done: { // Save profile changes. return true; } default: return super.onOptionsItemSelected(item); } } }
Menüyü dinamik olarak değiştirme
Bir düğmeyi gizlemek veya göstermek ya da
onPrepareOptionsMenu()
.
Bu yöntem, menü gösterilmeden hemen önce çağrılır.
Önceki örnekten devam ettiğimizde Kaydet düğmesi
kullanıcı düzenlemeye başlayana kadar görünmez. Kullanıcı düzenleme yaptıktan sonra
kaydediyor. Bu mantığı onPrepareOptionsMenu()
işlevine eklemek şunları sağlar:
aşağıdaki adımları uygulayın:
Kotlin
class ExampleFragment : Fragment() { ... override fun onPrepareOptionsMenu(menu: Menu){ super.onPrepareOptionsMenu(menu) val item = menu.findItem(R.id.action_done) item.isVisible = isEditing } }
Java
public class ExampleFragment extends Fragment { ... @Override public void onPrepareOptionsMenu(@NonNull Menu menu) { super.onPrepareOptionsMenu(menu); MenuItem item = menu.findItem(R.id.action_done); item.setVisible(isEditing); } }
Menüyü güncellemeniz gerektiğinde (ör. kullanıcı
Profil bilgilerini düzenlemek için Düzenle düğmesi
invalidateOptionsMenu()
sistemin onCreateOptionsMenu()
işlevini çağırmasını istemek için barındırıcı etkinliğinde oturum açın.
Geçersiz kılma işleminden sonra onCreateOptionsMenu()
sayfasında güncelleme yapabilirsiniz. Bir kez
menü şişir, sistem onPrepareOptionsMenu()
işlevini çağırır ve
parçanın mevcut durumunu yansıtacak şekilde değişir.
Kotlin
class ExampleFragment : Fragment() { ... fun updateOptionsMenu() { isEditing = !isEditing requireActivity().invalidateOptionsMenu() } }
Java
public class ExampleFragment extends Fragment { ... public void updateOptionsMenu() { isEditing = !isEditing; requireActivity().invalidateOptionsMenu(); } }
Parçaya ait uygulama çubuğu
Uygulamanızdaki çoğu ekranda uygulama çubuğu yoksa veya
ekranın diğerlerinden farklı bir uygulama çubuğu olması gerekiyorsa, bir uygulama çubuğu
Toolbar
parça düzeni. Şurada herhangi bir yere Toolbar
ekleyebilirsiniz:
parçasının görünüm hiyerarşisini seçerseniz, onu genellikle sayfanın en üstünde
ekranda görebilirsiniz. Parçanızda Toolbar
kullanmak için bir kimlik sağlayın ve
diğer tüm öğelerde olduğu gibi parçanızda buna
görünüm. Araç çubuğunu
CoordinatorLayout
ve bunları kontrol etmenizi sağlar.
<androidx.appcompat.widget.Toolbar
android:id="@+id/myToolbar"
... />
Parçaya ait bir uygulama çubuğu kullanırken Google,
Toolbar
API'lerini doğrudan kullanabilirsiniz. Şunu kullanmayın
setSupportActionBar()
ve Fragment
menü API'lerini etkinleştirin.
Menüyü şişir
Toolbar
kolaylık yöntemi inflateMenu(int)
,
parametre olarak kullanabilirsiniz. Bir XML menü kaynağını
araç çubuğunuzdan, resId
öğesini aşağıdaki gösterildiği gibi bu yönteme iletin
örnek:
Kotlin
class ExampleFragment : Fragment() { ... override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ... viewBinding.myToolbar.inflateMenu(R.menu.sample_menu) } }
Java
public class ExampleFragment extends Fragment { ... @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { ... viewBinding.myToolbar.inflateMenu(R.menu.sample_menu); } }
Başka bir XML menü kaynağını şişirmek için
Yeni menünün resId
. Yeni menü öğeleri menüye eklenir ve
mevcut menü öğeleri değiştirilmez veya kaldırılmaz.
Mevcut menü grubunu değiştirmek istiyorsanız, önce menünün alt tarafındaki
aşağıda gösterildiği gibi, yeni menü kimliğiyle inflateMenu(int)
çağrılıyor
örnek:
Kotlin
class ExampleFragment : Fragment() { ... fun clearToolbarMenu() { viewBinding.myToolbar.menu.clear() } }
Java
public class ExampleFragment extends Fragment { ... public void clearToolbarMenu() { viewBinding.myToolbar.getMenu().clear() } }
Tıklama etkinliklerini yönetme
Bir
OnMenuItemClickListener
kullanarak doğrudan araç çubuğuna
setOnMenuItemClickListener()
yöntemidir. Kullanıcı bir menü öğesi seçtiğinde bu işleyici çağrılır
veya araç çubuğunun sonunda sunulan işlem düğmelerinden
görebilirsiniz. Seçilen
MenuItem
, dinleyicinin
onMenuItemClick()
yöntemini kullanır ve aşağıda gösterildiği gibi işlemi kullanmak için kullanılabilir
örnek:
Kotlin
class ExampleFragment : Fragment() { ... override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ... viewBinding.myToolbar.setOnMenuItemClickListener { when (it.itemId) { R.id.action_settings -> { // Navigate to settings screen. true } R.id.action_done -> { // Save profile changes. true } else -> false } } } }
Java
public class ExampleFragment extends Fragment { ... @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { ... viewBinding.myToolbar.setOnMenuItemClickListener(item -> { switch (item.getItemId()) { case R.id.action_settings: // Navigate to settings screen. return true; case R.id.action_done: // Save profile changes. return true; default: return false; } }); } }
Menüyü dinamik olarak değiştirme
Parçanız uygulama çubuğuna sahip olduğunda Toolbar
öğesini şuradan değiştirebilirsiniz:
diğer görünümlerde olduğu gibi çalışır.
Önceki örnekten devam ettiğimizde Kaydet menü seçeneği kullanıcı düzenlemeye başlayana kadar görünmez. Bu durumda, tekrar dokunun:
Kotlin
class ExampleFragment : Fragment() { ... fun updateToolbar() { isEditing = !isEditing val saveItem = viewBinding.myToolbar.menu.findItem(R.id.action_done) saveItem.isVisible = isEditing } }
Java
public class ExampleFragment extends Fragment { ... public void updateToolbar() { isEditing = !isEditing; MenuItem saveItem = viewBinding.myToolbar.getMenu().findItem(R.id.action_done); saveItem.setVisible(isEditing); } }
Gezinme simgesi ekleme
Araç çubuğunun başında gezinme düğmesi varsa bu düğme görünür.
Araç çubuğunda bir gezinme simgesi ayarlamak onu görünür hale getirir. Ayrıca transkriptinizi
her seferinde çağrılan gezinmeye özgü bir onClickListener()
kullanıcı, aşağıda gösterildiği gibi gezinme düğmesini tıklar
örnek:
Kotlin
class ExampleFragment : Fragment() { ... override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ... myToolbar.setNavigationIcon(R.drawable.ic_back) myToolbar.setNavigationOnClickListener { view -> // Navigate somewhere. } } }
Java
public class ExampleFragment extends Fragment { ... @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { ... viewBinding.myToolbar.setNavigationIcon(R.drawable.ic_back); viewBinding.myToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Navigate somewhere. } }); } }