版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chennai1101/article/details/82349451
相关文章
Android Snackbar控件
Android FloatingActionButton控件
Android Toolbar控件
Android AppBarLayout控件
Android CollapsingToolbarLayout控件
1. Toolbar类
Toolbar是替代ActionBar的产物,低版本可以使用v7兼容包,使用Theme.AppCompat主题,并添加配置。
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
2. Toolbar配置
主要属性,
- navigationIcon,设置导航栏图标
- logo,设置logo
- title,设置标题
- subtitle,设置副标题
- background,设置背景
Toolbar还可以设置自定义子视图,
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="60dp"
app:navigationIcon="@drawable/nav_back"
app:logo="@mipmap/ic_launcher_round"
app:title="标题"
app:subtitle="副标题"
app:titleMarginStart="20dp"
android:background="@color/colorPrimary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textSize="16sp"
android:textColor="@color/red"/>
</android.support.v7.widget.Toolbar>
3. 添加菜单
Activity需要继承AppCompatActivity,并调用setSupportActionBar()
方法。
public clas ToolbarActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toolbar);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}
在menu目录下添加menu_toolbar.xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_faq"
android:icon="@drawable/nav_faq"
android:title="问题"
app:showAsAction="always" />
<item
android:id="@+id/item_more"
android:icon="@drawable/nav_more"
android:title="添加"
app:showAsAction="never" />
<item
android:id="@+id/item_setting"
android:icon="@drawable/nav_setting"
android:title="设置"
app:showAsAction="never" />
</menu>
在代码中添加Menu,并设置点击事件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_faq) {
Toast.makeText(this, "Faq", Toast.LENGTH_SHORT).show();
} else if (item.getItemId() == R.id.item_more) {
Toast.makeText(this, "More", Toast.LENGTH_SHORT).show();
} else if (item.getItemId() == R.id.item_setting) {
Toast.makeText(this, "Setting", Toast.LENGTH_SHORT).show();
}
return true;
}
效果如下
4. 代码设置
Toolbar也提供了很多set方法,
- setNavigationIcon(int resId),设置导航栏图标
- setNavigationOnClickListener(OnClickListener listener),设置导航栏监听事件
- setLogo(int resId),设置logo
- setTitle(int resId),设置标题
- setTitle(CharSequence title),设置标题
- setSubtitle(int resId),设置副标题
- setSubtitle(CharSequence subtitle),设置副标题
- setBackgroundColor(int color),设置背景
- setBackgroundResource(int resid),设置背景
- setOverflowIcon(Drawable icon),设置菜单按钮样式
5. 修改菜单样式
设置Toolbar的popupTheme属性,修改下拉框样式
app:popupTheme="@style/AppTheme.OverFlowMenu"
在style.xml中,添加AppTheme.OverFlowMenu
<style name="AppTheme.OverFlowMenu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<!-- 是否覆盖锚点,默认为true,即盖住Toolbar -->
<item name="overlapAnchor">false</item>
</style>