現在のところ、アプリケーションの名前が表示されているだけなので、カスタムのものを表示して、アプリケーションの各画面で異なるようにしたいと思います。
たとえば、私のホーム画面ではアクションバーに「page1」と表示されますが、別のアクティビティではその画面のアクションバーに「page2」と表示されます。
FYI、 ActionBar はAPIレベル11で導入されました。ActionBarはアクティビティの上部にあるウィンドウ機能で、を表示することがあります。アクティビティのタイトル、ナビゲーションモード、および検索などのその他の対話型アイテム。
私は正確にタイトルバーをカスタマイズし、それをアプリケーションを通じて一貫させることについて覚えています。それで、私は以前の日と比較することができて、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
であれば、次のコードが私のために働きます:
<?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 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>
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ファイルは、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>
マニフェストファイルで各アクティビティのラベルを定義できます。
アクティビティの通常の定義は次のようになります。
<activity
Android:name=".ui.myactivity"
Android:label="@string/Title Text" />
このアクティビティのタイトルテキストを文字列リソースのIDに置き換える必要がある場所。
動的に設定したい場合は、コードからタイトルテキストを設定することもできます。
setTitle(address.getCity());
この行で、タイトルは私のアクティビティの作成方法で特定の住所の都市に設定されます。
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);
}
}
ActionBarのタイトルを変更する方法は2つあります。
マニフェストの場合:マニフェストファイルで、各アクティビティのラベルを設定します。
Android:label="@string/TitleWhichYouWantToDisplay"
コード内:コード内で、引数として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);
}
}
Activity.onCreate()コールバック内、またはタイトルを変更する必要がある別の場所で。
getSupportActionBar().setTitle("Whatever title");
これをやってみてください...
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);
...
...
}
わたしにはできる
getActionBar().setTitle("edit your text");
少し古いですが、同じ問題がありました。私はこのようにしました:
strings.xml
<string name="title_awesome_app">My Awesome App</string>
そして、あなたがあなたのAndroidManifest.xmlでこれを設定することを確認してください:
<activity
...
Android:label="@string/title_awesome_app" >
...
</activity>
それは簡単で、あなたはnull参照や他のものについて心配する必要はありません。
アクションバーの名前を変更する最も簡単な方法は、AndroidManifest.xmlに移動してこのコードを入力することです。
<activity Android:name=".MainActivity"
Android:label="Your Label> </activity>
このコードをonCreate
メソッドに追加するだけです。
setTitle("new title");
アクションバーの名前を変更する最善の方法は、AndroidManifest.xmlに移動してこのコードを入力することです。
<activity Android:name=".YourActivity"
Android:label="NameYouWantToDisplay> </activity>
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
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"
の場合)。
最も簡単な方法は、活動中の場合はthis.setTitle("...")
を呼び出すことです。そして、あなたが断片化しているなら、ただgetActivity().setTitle("...")
を呼び出してください。
こうすることで、いつでもタイトルを変更できます。setContentView(R.layout.activity_test)
の前に呼び出す必要はありません。