读第一行代码第12章-1.标题栏

读了第一行代码之后,觉得内容写的非常不错,于是照着书把代码敲了一遍,今天敲的是Toolbar。
Toolbar就是标题栏,只不过之前使用的标题栏叫ActionBar,由于ActionBar有很多的局限性,所以改用Toolbar,可以在标题栏中增加许多乐趣。

第一步去掉标题栏:

5d1cbd0618ba258807.png

第二步将v7库中的Toolbar添加到布局中:

5d1cbd136ac0f75015.png

这里面Toolbar的高度指定为与原标题栏的高度相同,颜色什么的都在下图中:

5d1cbd4d8691411479.png

接下来在MainActivity中添加下面的两行代码:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);  

添加完之后就会发现,又报错了,这是为什么呢?

5d1cbd5ac313183275.png

重新查看布局文件:

5d1cbd681c81c18074.png

大致能猜出原因了吧,因为我们使用的是appcompat-v7库中的Toolbar,所以要删除原的包名,重新导入:

5d1cbd7f6489822220.png

错误消失,现在我们已经有了一个原来一模一样的标题栏了,只不过他的名字由ActionBar变成了Toolbar,接下来我们在标题栏中添加一些按钮。首先导入五张图片作为按钮的图标,将他们导入至drawable-xxhdpi目录下:

5d1cbd92bda3d38341.png

然后右键res目录→NEW→Directory,创建一个menu文件夹:

5d1cbde485d4389857.png

并右键menu文件夹→NEW→Menu resourse file,创建一个toolbar.xml文件:

5d1cbdf5aec1943001.png

接下来在文件中添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/Share"
    android:title="Share"
    android:icon="@drawable/share"
    app:showAsAction="always"/>
<item
    android:id="@+id/Upload"
    android:title="Upload"
    android:icon="@drawable/upload"
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/Add"
    android:title="Add"
    android:icon="@drawable/add"
    app:showAsAction="never"/>
<item
    android:id="@+id/Delete"
    android:title="Delete"
    android:icon="@drawable/delete"
    app:showAsAction="never"/>
<item
    android:id="@+id/Setting"
    android:title="Setting"
    android:icon="@drawable/setting"
    app:showAsAction="never"/>
</menu>  

其中我们用标签来定义一个action按钮,android:icon指定图标,android:title指定文字,showAsAction指定按钮显示的位置,always表示永远显示在标题栏中,ifRoom表示如果标题栏空间足够大,则显示在标题栏中,如果空间不够大,则隐藏在菜单中,never表示 永远隐藏在菜单中。并且标题栏中只会显示图片,菜单中只会显示文字。
接下来修改MainActivity中的内容:

package com.project.software.toolbar;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.toolbar,menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.Share:
            Toast.makeText(this,"You click Share!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Upload:
            Toast.makeText(this,"You click Upload!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Add:
            Toast.makeText(this,"You click Add!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Delete:
            Toast.makeText(this,"You click Delete!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Setting:
            Toast.makeText(this,"You click Setting!",Toast.LENGTH_SHORT).show();
            break;
        default:break;
    }
    return true;
}
}  

我们在onCreateOptionMenu()方法中加载了toolbar这个文件,然后通过onOptionItemSelected()方法处理各个按钮的点击事件,最终运行效果如下:

5d1cbe25a5dbb29102.gif

Over

转载于:https://www.cnblogs.com/zqm-sau/p/9178528.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值