1. ホーム
  2. アンドロイド

[解決済み】アクションバーのテキストを変更する方法

2022-04-01 19:15:03

質問

現在、アプリケーションの名前だけが表示されていますが、何かカスタムで、アプリの画面ごとに異なるものを表示させたいと思っています。

例えば、ホーム画面ではアクションバーに「page1」と表示し、アプリが切り替わる別のアクティビティでは、その画面のアクションバーに「page2」と表示することができます。

解決方法は?

ActionBar(Title)の最新パターンを更新しました。

ご参考まで。 アクションバー は、API Level 11 で導入されました。ActionBarは、Activityの上部にあるウィンドウ機能で、以下のようなものが表示されることがあります。 アクティビティタイトル ナビゲーションモードや、検索などのインタラクティブなアイテムがあります。

タイトルバーをカスタマイズして、アプリケーションの中で統一感を持たせたことはよく覚えています。ですから、以前の時代と比較し、ActionBarを使うことの利点をいくつか挙げることができます。

  1. 異なるスクリーン構成に優雅に適応するシステムが、アプリケーション間で慣れ親しんだインターフェイスをユーザーに提供します。
  2. ActionBarはトップレベルの抽象化によってすでに準備されているため、開発者はアクティビティタイトル、アイコン、ナビゲーションモードを表示するために多くのコードを書く必要がありません。

例えば

=>通常の方法です。

getActionBar().setTitle("Hello world App");   
getSupportActionBar().setTitle("Hello world App");  // provide compatibility to all the versions

=> アクションバーのカスタマイズ。

例えば

@Override
public void setActionBar(String heading) {
    // TODO Auto-generated method stub

    com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
    actionBar.setTitle(heading);
    actionBar.show();

}

アクションバーのスタイリング。

ActionBarは、基本的で見慣れたルックス、ナビゲーションモード、その他のクイックアクションを実行するための機能を提供します。しかし、どのアプリでも同じように見えるというわけではありません。UIやデザインの要件に応じて、カスタマイズすることができます。スタイルとテーマを定義し、記述する必要があります。

詳しくはこちらでご覧ください。 アクションバーのスタイリング

また、ActionBarのスタイルを生成したい場合は、次のようにします。 スタイルジェネレータ ツールにお任せください。

=================================================================================

古い。以前のこと。

=>普通の方法。

を設定することで、各画面(アクティビティ)のタイトルを変更することができます。 Android:label

   <activity android:name=".Hello_World"
                  android:label="This is the Hello World Application">
   </activity>

=> カスタム - タイトル - バー


しかし、もしあなたがタイトルバーを自分流にカスタマイズしたいのであれば、例えば Want to put Image icon and custom-text であれば、以下のコードでうまくいきます。

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

タイトルバー.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="400dp" 
  android:layout_height="fill_parent"
  android:orientation="horizontal">

<ImageView android:id="@+id/ImageView01" 
            android:layout_width="57dp" 
            android:layout_height="wrap_content"
            android:background="@drawable/icon1"/>

<TextView 

  android:id="@+id/myTitle" 
  android:text="This is my new title" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:textColor="@color/titletextcolor"
   />
</LinearLayout>

タイトルバー(TitleBar.java)

public class TitleBar extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final boolean customTitleSupported = 
                requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        if (customTitleSupported) {
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                R.layout.titlebar);
        }
        final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
        if (myTitleText != null) {
            myTitleText.setText("NEW TITLE");
            // user can also set color using "Color" and then
            // "Color value constant"
            // myTitleText.setBackgroundColor(Color.GREEN);
        }
    }
}

文字列.xml

strings.xml ファイルは values フォルダーに格納されます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Set_Text_TitleBar!</string>
    <string name="app_name">Set_Text_TitleBar</string>
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>