Toolbarだと思ってたものがActionbarだった話


Toolbarの文字の色を変えたくていろいろ調べてたんですが、そもそもデフォルトで見えてるのはToolbarではなくてActionbarだったみたいですね。

Actionbarをいじるにはstyles.xmlでスタイルを作成して、AndroidManifest.xmlにandroid:theme="作成したスタイルのパス"を書くみたいなんですが(多分)、よくわからなかったのといじりやすければActionbarでもToolbarでもどっちでもいいや!ってことで「Actionbarを消してToolbarをのせる」ことにしました。

Actionbarを消す

方法1:スタイルを作成してセットする

app/src/main/res/values/styles.xml
<!--スタイルを作成-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
app/src/main/AndroidManifest.xml
<!--作成したスタイルをセット-->
<activity android:name=".MainActivity"
    android:theme="@style/AppBaseTheme" />

他の画面がある場合も、同じようにスタイルをセットしてあげればActionbarを消せます。
スタイル名(AppBaseTheme)はhogeでもなんでもいいですが、わかりやすい名前にしてくださいね。

私は今回こっちの方法でActionbarを消しました。

方法2:継承をActivityに変更する

MainActivity.kt(変更前)
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        // 中略
    }
}
MainActivity.kt(変更後)
class MainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        // 中略
    }
}

Toolbarを実装する

android:textは普通に文字列を入れても大丈夫です。(android:text="hello world"みたいな)
ただ、基本的にはres/values/strings.xmlに文字列を書くようにした方がいいみたいです。

https://codezine.jp/article/detail/9387
アプリを他言語に対応させたい場合、別言語で記述されたstrings.xmlを作成し、所定のフォルダ(例えば日本語ならvalues-ja)に入れておくだけで、Android OSの言語設定に従ってOS側で自動的にstrings.xmlを切り替えてくれる仕組みが整っているからです。

文字色を変えるにはandroid:textColor="#ffffff"のようにRGB形式で書くか、リソースに追加した色を指定します。(下記のコードに書いてある感じ)

activity_main.xml
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar_main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" >

    <!-- Toolbarに表示する文字(例) -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="15dp"
        android:text="@string/main_title"
        android:textColor="@color/color_text"
        android:textSize="18sp" />

</android.support.v7.widget.Toolbar>

分かってしまえば簡単なんですけど、これを知るのに半日使ったんですよね。
もっと上手に調べものできるようになりたい。

2021/9/30追記
余談ですけど「リスト一覧」って日本語おかしいですね…。