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><!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</code></pre>
<p>布局xml文件,添加Toolbar</p>
<pre><code><?xml version="1.0" encoding="utf-8"?>
<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">
<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"/>
</android.support.constraint.ConstraintLayout>
</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><android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:background="@color/colorPrimary"
android:layout_height="wrap_content"/>
</code></pre>
<h3 id="修改标题文字颜色">修改标题文字颜色</h3>
<p>修改<code>titleTextColor</code>属性,需要引入app命名空间</p>
<pre><code><android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:titleTextColor="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</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><?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:title="设置" android:id="@+id/menu_setting" app:showAsAction="always" android:icon="@drawable/icon_setting"/>
</menu>
</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]