Android 學習筆記四:建立工具欄按鈕
前面我們已經可以在一個Activity中新增一些按鈕之類的元件。由於手機的螢幕很小,所以很多時候我們會需要用到工具欄,通過下拉選單之類的方式來節省空間。
Android 提供了對工具欄按鈕的強大支援。
增加一個工具欄按鈕
我們現在給 MainActivity
增加一個搜尋按鈕。增加一個按鈕需要做這三件事
一,在 res/menu/activity_main.xml
中增加一個按鈕的配置。在自動生成的專案中已經有了這個檔案,並且自動建立了一個設定按鈕,我們只要增加一個搜尋按鈕即可
<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=".MainActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_search_white_24dp"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
注意其中我們用到了 drawable
和 string
中的兩個資源,需要自己去建立一下。
二,在 MainActivity
中引用配置好的按鈕
在 MainActivity
中已經宣告瞭一個 onCreateOptionsMenu
方法了,其實根本不用改:
@Override
public boolean onCreateOptionsMenu(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;
}
三,給按鈕繫結事件
這裡我們也已經有一個 onOptionsItemSelected
方法了,只需要在其中增加一下事件監聽就行了
@Override
public boolean onOptionsItemSelected(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.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
switch (id) {
case R.id.action_search: Toast.makeText(this, "你點選了搜尋", Toast.LENGTH_SHORT).show();
case R.id.action_settings: Toast.makeText(this, "你點選了設定", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
增加返回按鈕
很多時候,我們需要給不是 MainActivity
的活動都增加一個返回按鈕,以方便使用者通過返回按鈕能返回到上一個活動。安卓提供了返回按鈕的預設支援,我們只需要配置一下即可,並不用寫返回的邏輯程式碼。
只需要兩步既可以實現返回按鈕的功能。這裡我們希望能在 ProfileActivity
中增加一個 返回按鈕,點選返回 MainActivity
中
一,在 AndroidManifest.xml
中 Activity 的宣告中加上父活動的宣告:
<activity
android:name=".ProfileActivity"
android:label="@string/title_activity_profile"
android:parentActivityName=".MainActivity">
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
<intent-filter>
<action android:name="com.lihongxun.Profile" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
注意,如果想支援 4.0 及以下裝置需要加上 meta-data
那一行,不然就只需要加上 android:parentActivityName=".MainActivity”
即可
二,在 ProfileActivity
中啟用返回按鈕。在 onCreate
函式中加上一行程式碼即可:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
然後再執行試試。
三 覆蓋式工具欄
預設情況下,頂部的工具欄是佔用空間的,他會把內容區擠到下面去。有時候你可能會希望它是覆蓋在內容區上的,特別是你希望能動態顯示隱藏工具欄的時候。
只需要在 styles.xml
中宣告使用覆蓋式工具欄即可
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
</style>
中間的兩行 item
就是宣告覆蓋式工具欄,注意第二行是相容庫的時候用。
相關文章
- Ionic3學習筆記(四)修改返回按鈕文字、顏色筆記
- Android學習筆記四Android筆記
- Bootstrap系列 -- 30. 按鈕工具欄boot
- VBA 控制元件學習筆記(按鈕點選事件)控制元件筆記事件
- 工具欄上按鈕的繪製 (轉)
- Flutter學習筆記(11)--文字元件、圖示及按鈕元件Flutter筆記字元元件
- 20151216JqueryUI學習筆記---按鈕jQueryUI筆記
- Android 學習筆記之單選按鈕(RadioButton)和核取方塊(CheckBox)Android筆記
- ESP32 開發筆記(四)LVGL控制元件學習 3 Button 按鈕控制元件筆記控制元件
- Android學習筆記(建立Menu,Intent的使用)Android筆記Intent
- Android 快取工具 DiskLruCache 學習筆記Android快取筆記
- Ext學習筆記8-資料模型及工具欄選單欄筆記模型
- goLang學習筆記(四)Golang筆記
- Javascript 學習 筆記四JavaScript筆記
- TS學習筆記(四)筆記
- ios 學習筆記(8) 控制元件 按鈕(UIButton)的使用方法iOS筆記控制元件UI
- Oracle Form 控制form工具欄按鈕是否可點選OracleORM
- ONNXRuntime學習筆記(四)筆記
- activiti學習筆記(四)managementService筆記
- Spss 學習筆記(四)SPSS筆記
- 四元數 學習筆記筆記
- c++學習筆記(四)C++筆記
- less學習之Bootstrap(按鈕篇)boot
- mysql修改表欄位學習筆記MySql筆記
- CUDA學習筆記之柵欄同步筆記
- Android 學習筆記雜記Android筆記
- 前端學習-flutter學習-010-按鈕前端Flutter
- RMAN學習筆記_ Duplicate建立DataGuard筆記
- ES6 學習筆記四筆記
- TS學習筆記(四):函式筆記函式
- springboot 學習筆記(四)Spring Boot筆記
- 大資料學習筆記(四)大資料筆記
- NET Core-學習筆記(四)筆記
- Android學習筆記·ANRAndroid筆記
- Android學習筆記·HandlerAndroid筆記
- Android SQLite學習筆記AndroidSQLite筆記
- Android學習筆記一Android筆記
- Android學習筆記(6)Android筆記