学习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。
运行状态如下:

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

以上,就是本次的全部内容。
网友评论