Toolbar android là gì

AppBarLayout là bố cục chính của ToolBar và ToolBar là ActionBar tùy chỉnh. Nếu bạn muốn hành động cuộn trên ToolBar, do đó bạn nên viết ToolBar vào AppBarLayout, trước khi bạn viết mã để cuộn ToolBar, bạn phải biết NestedScrollBar, nó được sử dụng để cuộn ToolBar. nhưng bạn không thể kết nối trực tiếp NestedScrollBar và ToolBar, bởi vì ToolBar là con của AppBarLayout và NestedScrollBar là anh chị em của AppBarLayout, đó là lý do tại sao Thanh công cụ của bạn nên trong AppBarlayout và bạn có thể kết nối AppBarlayout và NestedScout

Toolbar được tạo ra để thay thế Actionbar, cá nhân mình thấy nó dễ dàng chỉnh sửa lại giao diện hơn là Actionbar. Được giới thiệu từ API 21 nhưng google cũng cho ta 1 thư viện để có thể chạy nó trên các đời android thấp hơn. đó là android.support.v7.widget.Toolbar
Với toolbar các bạn cũng có thể custom nó giống như 1 actionbar, các bạn cũng có thể thêm các button và bắt sự kiện cho nó như 1 menu bình thường.

2. Gi ới thiệu Spinner

Spinner là view sử dụng để hiển thị lên một list các danh sách giống như listview mà chúng ta sẽ học ở phần sau, tuy nhiên bạn thường chỉ chọn 1 lựa chọn trong 1 danh sách đó thôi.
Một Spinner sẽ có dạng như sau:

Các bạn xem hình bên dưới để thấy rõ hơn.

3.Custom toolbar hiển thị Spinner

Toolbar android là gì
Toolbar android là gì

Ở bài viết này mình sẽ hướng dẫn các bạn hiển thị Spinner trên toolbar gồm các bước như sau:

  • Tạo một layour  toolbar chứa spinner
  • Tạo layout cho mỗi item của spinner
  • Tạo menu trên actionbar
  • Tạo CustomSpinnerAdapter
  • Code MainActivity
  • Run App

2. Tạo layout spinner_row.xml cho mỗi item của Spinner

3. Tại acivity_main.xml inclue toolbar.xml vào

4. Tạo một file menu.xml trong thư mục menu như sau:

5. Tạo một drawable có tên spinner_selector.xml

6. Thay đổi style.xml như sau các bạn không thích có thể để nguyên

7. Các color sử dụng

#009688 #00796B #004D40

8. Các text sử dụng trong string.xml

SpinnerToolbar Hello world! Settings Details Search

9. Tạo CustomSpinnerAdapter.java như sau:

public class CustomSpinnerAdapter extends ArrayAdapter { private Context context; private ArrayList data; public Resources res; private LayoutInflater inflater; public CustomSpinnerAdapter(Context context, ArrayList objects) { super(context, R.layout.spinner_row, objects); this.context = context; data = objects; inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } @Override public View getView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } // This funtion called for each row ( Called data.size() times ) public View getCustomView(int position, View convertView, ViewGroup parent) { View row = inflater.inflate(R.layout.spinner_row, parent, false); TextView tvCategory = (TextView) row.findViewById(R.id.tvCategory); tvCategory.setText(data.get(position).toString()); return row; } }

10. Tại MainActivity.java thiết lập dữ liệu như sau

public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private Spinner spinner_nav; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); spinner_nav = (Spinner) findViewById(R.id.spinner_nav); if (toolbar != null) { setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); } addItemsToSpinner(); } // Add Item to Spinner public void addItemsToSpinner() { ArrayList list = new ArrayList(); list.add("Top News"); list.add("Movies"); list.add("Video"); list.add("Sports"); list.add("Tech"); CustomSpinnerAdapter spinAdapter = new CustomSpinnerAdapter( getApplicationContext(), list); spinner_nav.setAdapter(spinAdapter); spinner_nav.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapter, View v, int position, long id) { // Item selected String item = adapter.getItemAtPosition(position).toString(); // Show Data Toast.makeText(getApplicationContext(), "Selected : " + item, Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. int id = item.getItemId(); if (id == R.id.action_settings) { Toast.makeText(getApplicationContext(), "Settings Clicked", Toast.LENGTH_SHORT).show(); return true; } else if (id == R.id.action_search) { Toast.makeText(getApplicationContext(), "Search Clicked", Toast.LENGTH_SHORT).show(); return true; } else if (id == R.id.action_add) { Toast.makeText(getApplicationContext(), "Add Clicked", Toast.LENGTH_SHORT).show(); return true; } else if (id == R.id.action_delete) { Toast.makeText(getApplicationContext(), "Delete Clicked", Toast.LENGTH_SHORT).show(); return true; } return super.onOptionsItemSelected(item); } }

Tiến hành Run app lưu ý khi sử dụng cần test kỹ trên các thiết bị khác nhau.

Link: Github.