エンジニア男

勉強したことの忘備録としてつらつら書いていきます。

【Android】ActionBarまとめ

ActionBarの使い方のまとめ。

 

・AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android_components_app">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="アクションバーに表示するタイトル"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:thema="@style/AppThema"> //ここでアクションバーのstyleを設定
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

アプリ全体や、Activityに対する個別の設定などはこのファイルで行う。

 

 

・styles.xml

<resources>

<!-- アクションバーの設定 -->
<style name="AppThema" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

</resource>

表示するアクションバーの設定などはstyle.xmlにまとめる。

 

 

・MainActivity.java

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

// この関数でアクションバーの右側のアイテム表示を行う
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
// 表示する設定を取得
menuInflater.inflate(R.menu.menu_main, menu)
return true
}

// この関数でアクションバーの右側のアイテムタップ処理を実装する
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return super.onOptionsItemSelected(item)
}

}

アクションバーにitem表示を行う際は、xmlファイルをActivityで読み込む。 

 

 

・menu_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="com.example.android_app.MainActivity">

<item
android:id="@+id/item_1"
android:title="item1"
android:orderInCategory="1"
app:showAsAction="never" />

<item
android:id="@+id/item_2"
android:title="item_2"
android:orderInCategory="2"
app:showAsAction="never" />

<item
android:id="@+id/item_3"
android:title="item_3"
android:orderInCategory="3"
app:showAsAction="never" />
<!-- ↑オーバーフロー内に文字列をList表示 -->

<!-- ↓アイコンを表示する時の設定 -->
<item
android:id="@+id/icon_1"
android:title="icon_1"
android:icon="@drawable/ic_whatshow"
android:orderInCategory="0"
app:showAsAction="ifRoom" />

<!--
android:id => リソースIDの設定。
android:title => 文字列リソース。メニュータイトルで表示する。
android:titleCondensed => 文字列リソース。文字列リソースが長すぎる時に使用される。
android:icon => ドローアブルリソース。メニュー項目のアイコンとして表示
android:onClick => メニュー項目がタップされた時に呼び出す関数を指定する。
android:orderInCategroy => アプリを表示させる優先度を指定する。数字の昇順にListの上から表示される。
android:showAsAction
=> ifRoom : スペースがある場合に限り、このアイテムをアプリバー内に表示する。※文字列も表示可能
=> withText : アクションアイテムとタイトルテキストを一緒に表示させる。
=> never : アプリバー内ではなく、オーバーフロー[:]内にリスト表示させる。※icon表示をneverにすると、titleの文字列リソースが表示される。
=> always : アプリバー内に、常にこのアイテムを配置する。
=> collapseAction View : このアクションアイテムに関連付けられているアクションビューが折りたたみ可能になる
-->

</menu>



 アクションバーに表示するitemの設定を行う。