web-dev-qa-db-ja.com

アクションバーのテキストを変更する方法

現在のところ、アプリケーションの名前が表示されているだけなので、カスタムのものを表示して、アプリケーションの各画面で異なるようにしたいと思います。

たとえば、私のホーム画面ではアクションバーに「page1」と表示されますが、別のアクティビティではその画面のアクションバーに「page2」と表示されます。

223
dootcher

更新日:最新のアクションバー(タイトル)パターン:

FYI、 ActionBar はAPIレベル11で導入されました。ActionBarはアクティビティの上部にあるウィンドウ機能で、を表示することがあります。アクティビティのタイトル、ナビゲーションモード、および検索などのその他の対話型アイテム。

私は正確にタイトルバーをカスタマイズし、それをアプリケーションを通じて一貫させることについて覚えています。それで、私は以前の日と比較することができて、ActionBarを使うことの利点のいくつかをリストすることができます:

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

例えば:

enter image description here

enter image description here

=>普通のやり方、

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"/>

titlebar.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);
        }
    }
}

strings.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>
339
Paresh Mayani

マニフェストファイルで各アクティビティのラベルを定義できます。

アクティビティの通常の定義は次のようになります。

<activity
     Android:name=".ui.myactivity"
     Android:label="@string/Title Text" />

このアクティビティのタイトルテキストを文字列リソースのIDに置き換える必要がある場所。

動的に設定したい場合は、コードからタイトルテキストを設定することもできます。

setTitle(address.getCity());

この行で、タイトルは私のアクティビティの作成方法で特定の住所の都市に設定されます。

105
Janusz

setTitle内でActivityを使用してプログラム的にタイトルを定義できます。このメソッドはStringまたはvalues/strings.xmlファイルで定義されているIDのいずれかを受け入れることができます。例:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setTitle(R.string.your_title);
        setContentView(R.layout.main);

    }
}
54
donturner

ActionBarのタイトルを変更する方法は2つあります。

  1. マニフェストの場合:マニフェストファイルで、各アクティビティのラベルを設定します。

    Android:label="@string/TitleWhichYouWantToDisplay"
    
  2. コード内:コード内で、引数としてStringまたはStringのIDを指定してsetTitle()メソッドを呼び出します。

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            setTitle(R.string.TitleWhichYouWantToDisplay);
            // OR You can also use the line below
            // setTitle("MyTitle")
            setContentView(R.layout.activity_main);
    
        }
    }
    
18

Activity.onCreate()コールバック内、またはタイトルを変更する必要がある別の場所で。

getSupportActionBar().setTitle("Whatever title");
11
Andrey

これをやってみてください...

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    this.setTitle(String.format(your_format_string, your_personal_text_to_display));
    setContentView(R.layout.your_layout);
       ...
       ...
}

わたしにはできる

6
nonickh
getActionBar().setTitle("edit your text"); 
3

少し古いですが、同じ問題がありました。私はこのようにしました:

strings.xml

<string name="title_awesome_app">My Awesome App</string>

そして、あなたがあなたのAndroidManifest.xmlでこれを設定することを確認してください:

<activity
            ...
            Android:label="@string/title_awesome_app" >
            ...
</activity>

それは簡単で、あなたはnull参照や他のものについて心配する必要はありません。

3
Javatar

アクションバーの名前を変更する最も簡単な方法は、AndroidManifest.xmlに移動してこのコードを入力することです。

<activity Android:name=".MainActivity"
    Android:label="Your Label> </activity>
3

このコードをonCreateメソッドに追加するだけです。

setTitle("new title");
2
NEC

アクションバーの名前を変更する最善の方法は、AndroidManifest.xmlに移動してこのコードを入力することです。

<activity Android:name=".YourActivity"
        Android:label="NameYouWantToDisplay> </activity>
1
Parichay21
ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());

LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, // Width of TextView
        LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);

詳細については、このリンクを確認してください。

http://Android-- code.blogspot.in/2015/09/Android-how-to-change-actionbar-title_21.html

1

AndroidXおよびナビゲーションアーキテクチャコンポーネントを使用している将来の開発者のためのものです。

上記の解決策の1つを使用してツールバーのタイトルを設定する代わりに、バックスタックの変更時に動的に設定したい場合は非常に面倒です。次のように、ナビゲーショングラフのフラグメントのタイトルプレースホルダを設定できます。

<fragment
    Android:id="@+id/some_fragment"
    Android:name="package.SomeFragment"
    Android:label="Hello {placeholder}"
    tools:layout="@layout/fragment_some">
    <argument
        Android:name="placeholder"
        app:argType="string" />
</fragment>

プレースホルダの値はFragmentDirectionsを使って(アクションメソッド経由で)提供されなければなりません。

それはタイトルに置き換えられ、Hello Worldのように表示されます(placeholder = "World"の場合)。

0
Fabian Damken

最も簡単な方法は、活動中の場合はthis.setTitle("...")を呼び出すことです。そして、あなたが断片化しているなら、ただgetActivity().setTitle("...")を呼び出してください。

こうすることで、いつでもタイトルを変更できます。setContentView(R.layout.activity_test)の前に呼び出す必要はありません。

0
Hatim