网友通过本文主要向大家介绍了android toolbar,android自定义toolbar,android toolbar控件,android toolbar menu,android toolbar 返回等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android Support Library 之 Toolbar
在 Android 3.0 开始 ,所有的主题默认把 ActionBar 作为默认的 App Bar,但是它很死板,不容易自行设计想要的风格, 在 v7 兼容库中,出现了 Toolbar, 它改善了这个问题,伴随着 Toolbar 取代 传统的 ActionBar ,ActionBar 上的功能要怎么在 ToolBar 上实现,需要我们去探讨下 。 </div>如何添加Toolbar
1、我们使用的是 v7 兼容库,所以 Activity 要继承自 AppCompatActivity</div>MainActivity extends AppCompatActivity
</div> 2、修改主题 ,去掉默认的 ActionBar,v7 兼容库给我们提供了一个默认的没有 ActionBar 的主题</div> </div> </div> 例如</div>
</div> </div> </div> 3、在布局中添加 Toolbar</div>
</div> </div> </div> 4、在代码中把 Toolbar 设置为 App Bar ,并设置它的 Navigation Icon, Logo,Title,SubTitle</div> Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setNavigationIcon(R.mipmap.ic_action_back); toolbar.setLogo(R.mipmap.ic_launcher); toolbar.setTitle("Toolbar"); toolbar.setSubtitle("Toolbar SubTitle"); setSupportActionBar(toolbar);
</div> </div> 看下效果</div> </div> 可是标题的颜色和 overflow 的颜色并不统一,全改为白色或许可以</div>
</div> 再看下效果</div> </div> </div> </div> 还可以吧~</div> </div> </div>
如何使用Toolbar
一旦我们设置了 ToolBar 作为了App Bar,那么就可以使用 v7 兼容包中的 ActionBar 类的方法</div> 例如</div> private void setupActionbar() { android.support.v7.app.ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.hide(); }</div> 我们在操作ActionBar的时候,也就相当于在操作Toolbar,因此在 Acionbar 上设置 title,Logo 都会覆盖 toolbar 上的显示</div>在 Toolbar 上增加 action menu 中的 options menu (>=3.0)
</div> 定义menu 菜单</div> </div> 显示menu</div> @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; }</div> 响应menu事件</div> @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.favorite: Toast.makeText(this, "Favorite", Toast.LENGTH_SHORT).show(); return true; } return super.onOptionsItemSelected(item); }</div>
在 Toolbar 中增加 action menu 中的 contextual menu 之 contextual action mod ( >= 3.0)
</div> </div> </div> 传统的是用 ListView,但是为了跟上时代的脚步,我想是时候用 RecyclerView 了,但是它没有提供如 ListView 一样的方法</div> listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); listView.setMultiChoiceModeListener();</div> 突然发现 ,RecyclerView没有这个方法,只能自己来做了,那么我们就需要想想如何设计这个问题。</div> </div> 首先,长按事件,可以在 ViewHolder 中提供接口</div> 然后在 Activity 实现,通过实现长按来开启contextual action mode</div> 这个时候,我们需要在 adapter 中改变 item 的颜色 ,我们可以用 notifyItemChanged(position) 来让 RecyclerView 重新调用 onBindViewHolder() 方法来给 item 设置背景色,然后,我们可以选择其它的 item 并同时让它们变色,再响应 contextual action mode 的 delete 响应事件来删除 item。这样看来一切很完美 ,那我们来一步一步实现。</div> </div> item 布局</div>