افزودن منو به تاب توشه
در حالي كه هنوز در قسمت shr_product_grid_fragment.xml ميباشيد، مورد ها پايين را به مؤلفه Toolbar XML طراحي اپليكيشن در مشهد اضافه فرمائيد:
xmlns:app="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=".ProductGridFragment">
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/app_bar"
style="@style/Widget.Shrine.Toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:navigationIcon="@drawable/shr_menu"
app:title="@string/shr_app_name" />
درحال حاضر دكمه هاي action را اضافه نمائيد و به نوار بالاي اپليكيشن استايل دهيد .
هم اكنون نوار بالايي را استايل دهي كرده و دكمه هاي action را به طور طرح ريزي گرديده به منوي آن اضافه ميكنيم.
آغاز بياييد روشي براي تهيه نوار ابزار توليد كنيم. اين روال مي بايست با به كار گيري از شناسه خويش به نوار ابزار ارجاع دهد و همينطور با به كار گيري از ()getActivity به اكتيويتي ارجاع دهد.
درحالتي كه اكتيويتي تهي وجود ندارد، نوار ابزار را تهيه فرماييد تا با به كار گيري از setSupportActionBar تحت عنوان يك ActionBar مصرف شود:
private void setUpToolbar(View view) {
Toolbar toolbar = view.findViewById(R.id.app_bar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.setSupportActionBar(toolbar);
}
در حال حاضر يك فراخواني به مشي setUpToolbar اضافه نمائيد كه به محتواي مشي () onCreateView اضافه كرديم با مفاد پايين:
@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment with the ProductGrid theme
View view = inflater.inflate(R.layout.shr_product_grid_fragment, container, false);
// Set up the toolbar
setUpToolbar(view);
return view;
}
@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment with the ProductGrid theme
View view = inflater.inflate(R.layout.shr_product_grid_fragment, container, false);
// Set up the toolbar
setUpToolbar(view);
return view;
}
در غايت يك اسلوب () onCreate به ProductGridFragment.java اضافه نماييد و در بدنه مشي، پارامتر setHasOptionMenu را صحيح تهيه فرماييد.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
كد بالا نوار نرمافزار را از طرح XML ما تحت عنوان نوار action براي اين شغل تهيه و تنظيم مي نمايد.
جواب به تماس onCreateOptionsMenu به action ميگويد كه از چه چيزي تحت عنوان منو به كارگيري نمايد. دراينصورت، مورد هاي منو از R.menu.shr_toolbar_menu را در نوار نرم افزار قرار ميدهد.
xmlns:app="http://schemas.android.com/apk/res-auto">
android:id="@+id/search"
android:icon="@drawable/shr_search"
android:title="@string/shr_search_title"
app:showAsAction="always" />
android:id="@+id/filter"
android:icon="@drawable/shr_filter"
android:title="@string/shr_filter_title"
app:showAsAction="always" />
xmlns:app="http://schemas.android.com/apk/res-auto">
android:id="@+id/search"
android:icon="@drawable/shr_search"
android:title="@string/shr_search_title"
app:showAsAction="always" />
android:id="@+id/filter"
android:icon="@drawable/shr_filter"
android:title="@string/shr_filter_title"
app:showAsAction="always" />
بعداز اين تغييرات، پوشه ProductGridFragment.java شما بايستي به طور ذيل باشد:
package com.google.codelabs.mdc.java.shrine;
import android.سيستم عامل.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
public class ProductGridFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment with the ProductGrid theme
View view = inflater.inflate(R.layout.shr_product_grid_fragment, container, false);
// Set up the toolbar
setUpToolbar(view);
return view;
}
private void setUpToolbar(View view) {
Toolbar toolbar = view.findViewById(R.id.app_bar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.setSupportActionBar(toolbar);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
menuInflater.inflate(R.menu.shr_toolbar_menu, menu);
super.onCreateOptionsMenu(menu, menuInflater);
}
}
بازدید: