江珊 發表於 2019-10-3 21:29:00

Android开发——Toolbar常用设置

<p>本篇笔记用来记录常用的Toolbar设置,如Toolbar颜色设置,显示返回按钮,显示右边三个点按钮</p>
<p>之前Android 使用的ActionBar,Android5.0开始,谷歌官方推荐使用Toolbar来代替ActionBar</p>
<p><strong>最近慢慢开始使用上kotlin了,贴出的代码可能是kotlin的代码,见谅,如果有Java基础的,其实还蛮简单上手的,可以参考一下我的kotlin学习笔记</strong></p>
<p>Kotlin学习笔记</p>
<h2 id="1使用toolbar替换actionbar">1.使用Toolbar替换ActionBar</h2>
<p>我们首先将主题设置为NoActionBar,之后在布局xml文件添加ToolBar</p>
<p>由Android Manifest文件进入Theme,修改Theme<br>
<img src="https://img2018.cnblogs.com/blog/1210268/201910/1210268-20191003205423220-2087998881.png" alt="" loading="lazy"></p>
<pre><code>&lt;!-- Base application theme. --&gt;
&lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt;
        &lt;!-- Customize your theme here. --&gt;
        &lt;item name="colorPrimary"&gt;@color/colorPrimary&lt;/item&gt;
        &lt;item name="colorPrimaryDark"&gt;@color/colorPrimaryDark&lt;/item&gt;
        &lt;item name="colorAccent"&gt;@color/colorAccent&lt;/item&gt;
&lt;/style&gt;
</code></pre>
<p>布局xml文件,添加Toolbar</p>
<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:layout_height="match_parent"
    tools:context="com.wan.noveldownloader.activity.MainActivity"&gt;
    &lt;android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      app:titleTextColor="@color/white"
      android:background="@color/colorPrimary"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/&gt;
&lt;/android.support.constraint.ConstraintLayout&gt;
</code></pre>
<p>之后,在Activity代码中,使用setSupportToolbar,把toolbar设置进去</p>
<pre><code>setContentView(R.layout.activity_main);
//findviewbyid找到toolbar实例
setSupportToolbar(toolbar);
</code></pre>
<p>之后运行就可以看到结果了</p>
<h2 id="2修改标题文字">2.修改标题文字</h2>
<p>默认的Toolbar显示的文字其实就是你当前APP项目的label,我们到AndroidManifest文件修改Activity的label属性,就可以达到修改文字的效果</p>
<p><img src="https://img2018.cnblogs.com/blog/1210268/201910/1210268-20191003210139877-1599736954.png" alt="" loading="lazy"></p>
<p>上图中,我的APP有两个Activity,其中,MainActivity中的toolbar没有定义label属性,所以,默认label属性等于项目名,所有显示的是“星之小说下载器”</p>
<p>而另外的那个SettingActivity则有label属性,所有,显示的文字就是“设置”</p>
<p>PS:如果不想要显示文字,则通过<code>getSupportActionBar().setDisplayShowTitleEnabled(false)</code>实现(在setSupportToolbar方法之后)</p>
<h2 id="3修改颜色">3.修改颜色</h2>
<h3 id="修改背景色">修改背景色</h3>
<p>修改背景颜色通过修改toolbar的<code>background</code>属性达到效果</p>
<pre><code>&lt;android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:background="@color/colorPrimary"
        android:layout_height="wrap_content"/&gt;
</code></pre>
<h3 id="修改标题文字颜色">修改标题文字颜色</h3>
<p>修改<code>titleTextColor</code>属性,需要引入app命名空间</p>
<pre><code>&lt;android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        app:titleTextColor="@color/white"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/&gt;
</code></pre>
<h2 id="4显示左边返回按钮">4.显示左边返回按钮</h2>
<p>通过代码的方式显示左边的返回按钮</p>
<pre><code>setSupportActionBar(toolbar)
getSupportActionBar().setHomeButtonEnabled(true)
getSupportActionBar().setDisplayHomeAsUpEnabled(true)
</code></pre>
<p>Activity中还需要重写<code>onOptionsItemSelected</code>方法,点击返回按钮达到返回的效果</p>
<pre><code>override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        if(item.itemId == android.R.id.home){
                finish()
        }
        return super.onOptionsItemSelected(item)
}
</code></pre>
<p>如果需要标题和返回按钮为白色,在toolbar控件添加下面的两行属性</p>
<pre><code>app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
</code></pre>
<h2 id="5显示toolbar的菜单按钮">5.显示Toolbar的菜单按钮</h2>
<h3 id="1创建menuxml">1.创建menu.xml</h3>
<p>在res目录下创建一个menu的文件夹,之后在menu文件夹中新建一个<code>menu.xml</code></p>
<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"&gt;
    &lt;item android:title="设置" android:id="@+id/menu_setting" app:showAsAction="always" android:icon="@drawable/icon_setting"/&gt;
&lt;/menu&gt;
</code></pre>
<ul>
<li>title 标题</li>
<li>icon 图标</li>
<li>showAsAction        <br>
此属性有几个选择
<ol>
<li><code>always</code>:这个值会使菜单项一直显示在Action Bar上。</li>
<li><code>ifRoom</code>:如果有足够的空间,这个值会使菜单项显示在Action Bar上。</li>
<li><code>never</code>:这个值使菜单项永远都不出现在Action Bar上。</li>
<li><code>withText</code>:这个值使菜单项和它的图标,菜单文本一起显示。</li>
</ol>
</li>
</ul>
<h3 id="2重写oncreatemenu方法">2.重写onCreateMenu方法</h3>
<p>重写Activity中的onCreateMenu的方法,把menu.xml文件装载到APP中</p>
<pre><code>override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu,menu)
        return true
}
</code></pre>
<h3 id="3重写opoptionselect方法">3.重写opOptionSelect方法</h3>
<p>设置每个菜单的点击事件,与设置监听器操作类似</p>
<pre><code>override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        if (item?.itemId ==R.id.menu_setting) {
                startActivity(SettingActivity::class.java)
        }
        return false
}

</code></pre>
<h3 id="4setsupporttoolbar">4.setSupportToolbar</h3>
<p>和之前的步骤一样</p>


</div>
<div id="MySignature" role="contentinfo">
    <hr>
<span>提问之前,请先看</span>提问须知
<span>点击右侧图标发起提问</span>
<img border="0" src="http://wpa.qq.com/pa?p=2:1053894518:52" alt="联系我" title="联系我">
<span>或者加入QQ群一起学习</span>
<img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="Stars-One安卓学习交流群" title="Stars-One安卓学习交流群">
TornadoFx学习交流群:1071184701
<img src="https://img2020.cnblogs.com/blog/1210268/202003/1210268-20200316120825333-1551152974.png" width="1000" height="auto">
<img src="https://img2018.cnblogs.com/blog/1210268/201905/1210268-20190508151523126-971809604.gif" width="1000" height="auto">
<!--<img src="https://img2020.cnblogs.com/blog/1210268/202004/1210268-20200413161422035-1188549898.gif" width="1000" height="auto">--><br><br>
来源:https://www.cnblogs.com/stars-one/p/11620853.html
頁: [1]
查看完整版本: Android开发——Toolbar常用设置