美文网首页
Android Studio上隐藏式toolbar(右上方工具条

Android Studio上隐藏式toolbar(右上方工具条

作者: 书安在 | 来源:发表于2017-09-05 21:45 被阅读3250次

学习Android编程,想使用toolbar内的选项来唤起功能,但几次尝试均未成功,最后经过多次尝试,终于完成此项工作。

下面就简要的介绍一下添加的方法,这里主要是把实现的代码进行了展示,原理性的说明此处没有进行详细的解释。

增加步骤:

1、修改styles,增加noactionbar状态

代码如下:

<resources>

<stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar">

<itemname="colorPrimary">@color/colorPrimaryitem>

<itemname="colorPrimaryDark">@color/colorPrimaryDarkitem>

<itemname="colorAccent">@color/colorAccentitem>

</style>

<stylename="AppTheme.NoActionBar">

<itemname="windowActionBar">falseitem>

<itemname="windowNoTitle">trueitem>

</style>

<stylename="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>

<stylename="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>

</resources>

2、若不存在,res里新建menu文件夹,同时新建文件,如menu_main.xml,增加menu和item配置。

代码如下:

<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"

xmlns:tools="http://schemas.android.com/tools"

tools:context="com.example.administrator.testmenu2.MainActivity">

<item

android:id="@+id/action_settings"

android:title="settings"

android:orderInCategory="100"

app:showAsAction="never"/>

</menu>

3、修改layout内的主xml布局文件,如activity_main.xml,增加AppBarLayout和ToolBar,这里需要注意,这两个布局应在ConstraintLayout布局内进行添加。

代码如下:

<xml version="1.0"encoding="utf-8"?>

<android.support.constraint.ConstraintLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.administrator.test3.MainActivity">

<android.support.design.widget.AppBarLayout

android:layout_height="wrap_content"

android:layout_width="match_parent"

android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay"/>

</android.support.design.widget.AppBarLayout>

</android.support.constraint.ConstraintLayout>

4、修改资源文件,即manifests文件夹下的AndroidManifest.xml文件,增加AppTheme.NoActionBar风格配置。

代码如下:

<xml version="1.0"encoding="utf-8"?>

<manifest

xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.administrator.test3">

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

<activityandroid:name=".MainActivity"

android:label="@string/app_name"

android:theme="@style/AppTheme.NoActionBar">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

5、修改java代码,将menu激活,代码如下:

packagecom.example.administrator.test3;

import android.os.Bundle;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

public classMainActivityextendsAppCompatActivity {

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

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

setSupportActionBar(toolbar);}

Override

public booleanonCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);

return true;}

Override

public booleanonOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.intid= item.getItemId();

//noinspection SimplifiableIfStatementif(id== R.id.action_settings) {

return true;}

return super.onOptionsItemSelected(item);}}

6、此处应注意import  android.support.design.widget.Snackbar;引用,在很多项目中此引用不起作用,需要重新添加,添加方法如下:

File->project  structure->app->depensencies点击加号引入liberydependency,点击design ->ok

完成以上六个步骤之后,进行调试,即可看到界面中现实有工具栏,并用系统默认的三个点表示,点击后显示内容setting。

运行状态如下:

运行时的状态

点击三个点后的状态如下:

点击后的状态

以上,就是本次的全部内容。

相关文章

网友评论

      本文标题:Android Studio上隐藏式toolbar(右上方工具条

      本文链接:https://www.haomeiwen.com/subject/pyppjxtx.html