私はAndroid-support-v7:21ライブラリを使って簡単なアプリケーションを作成しようとしています。
コードスニペット:
MainActivity.Java
public class MainActivity extends ActionBarActivity {
Toolbar mActionBarToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);
}
activity_main.xml
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
Android:orientation="vertical">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar_actionbar"
Android:background="@null"
Android:layout_width="match_parent"
Android:layout_height="?actionBarSize"
Android:fitsSystemWindows="true" />
</LinearLayout>
しかし、ツールバーの "My title"の代わりに%application name%が表示されます。setTitle
メソッドは効果がないようです。
「私の役職」を見せたいのですが。
UPD: 以前のstyles.xml
は次のとおりです。
<style name="AppTheme" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
</style>
だから、私はアクションバーは使用されていないと思いました。スタイルの親にNoActionBar
を追加します。
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
</style>
しかし、問題は解決されていません。
解決策が見つかりました:
の代わりに:
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);
私は使った:
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My title");
そしてそれはうまくいきます。
SupportActionBarを設定した後しばらくしてタイトル{ツールバーからを設定する必要がある人は、これを読んでください。
サポートライブラリの内部実装は、SupportActionBarが設定された瞬間にツールバーにタイトル(nullではない)があるかどうかをチェックするだけです。ある場合は、ウィンドウのタイトルの代わりにこのタイトルが使用されます。あなたは本物のタイトルをロードしている間あなたはダミーのタイトルを設定することができます。
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("");
setSupportActionBar(mActionBarToolbar);
後...
mActionBarToolbar.setTitle(title);
上記の答えは完全に真実ですが、私にとってはうまくいきません。
次のことで問題を解決しました。
実際、私のXMLは次のようなものです。
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/confirm_order_mail_layout"
Android:layout_width="match_parent"
Android:layout_height="fill_parent">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/confirm_order_appbar_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/confirm_order_list_collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|enterAlways">
<Android.support.v7.widget.Toolbar
Android:id="@+id/confirm_order_toolbar_layout"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
私はすべてのオプションを試しましたが、結局、CollapsingToolbarLayout
を削除したのは、その特定のXML
で使用する必要がないためです。したがって、私の最終XMLは
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/confirm_order_mail_layout"
Android:layout_width="match_parent"
Android:layout_height="fill_parent">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/confirm_order_appbar_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.v7.widget.Toolbar
Android:id="@+id/confirm_order_toolbar_layout"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
これで、上記の回答のようにsetTitle()
を使用する必要があります。
mActionBarToolbar = (Toolbar) findViewById(R.id.confirm_order_toolbar_layout);
setSupportActionBar(mActionBarToolbar);
getSupportActionBar().setTitle("My Title");
CollapsingToolbarLayout
とToolbar
を一緒に使用する場合は、CollapsingToolbarLayout
のsetTitle()
を使用する必要があります
CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout);
collapsingToolbarLayout.setTitle("My Title");
それがあなたを助けますように。ありがとうございました。
単にあなたが使用することによって任意の活動名を変更することができます
Acitivityname.this.setTitle("Title NAme");
これを試してください、あなたは直接XMLでタイトルを定義することができます:
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:title="some title"
app:popupTheme="@style/AppTheme.PopupOverlay">
各Navbarフラグメントのタイトルにタイトルを設定する
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
myView = inflater.inflate(R.layout.second_layout, container, false);
getActivity().setTitle("title");
return myView;
}
これを試してください..この方法は私のために働きます..!誰かに役立つことを願っています..!
<Android.support.v7.widget.Toolbar
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/my_awesome_toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="?attr/colorPrimary"
Android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >
<TextView
Android:id="@+id/toolbar_title"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:singleLine="true"
Android:text="Toolbar Title"
Android:textColor="@Android:color/white"
Android:textSize="18sp"
Android:textStyle="bold" />
</Android.support.v7.widget.Toolbar>
ツールバーにロゴを表示するには、以下のスニペットを試してください。 //描画可能に設定
toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo));
結果を教えてください。
getSupportActionBar().setTitle("Your Title");
https://code.google.com/p/Android/issues/detail?id=77763 を参照してください。どうやらそれはそのように動作するはずです。 setSupportActionBar()
メソッド呼び出しを呼び出すと、その呼び出しを正しいビューにルーティングするのはActionBarデリゲートの責任です。
.setTitle
だけではありません
onCreate
内のSupport Toolbar(Appcompat v7)のその他のメソッドは、でのみ動作します。
getSupportActionBar().method()
mToolbar.method()
では動作しません
例を示します。
getSupportActionBar().setTitle("toolbar title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ただし、次のメソッドはonCreate
にgetSupportActionBar()
がなくても正常に機能します。
mToolbar.setVisibility(View.VISIBLE);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
}
onCreate
イベントにのみ問題がありますが、mToolbar.setTitle()
を煩わしくする代わりにgetSupportActionBar().setTitle()
を後で使うことができます。例えば、これをonCreate
に追加するとうまくいきます(onCreate
の後に実行されるため)
mHandler.post(new Runnable() {
@Override
public void run() {
mToolbar.setTitle("toolbar title");
}
});
https://stackoverflow.com/a/35430590/4548520 より https://stackoverflow.com/a/26506858/4548520 このタイトルを変更した場合mToolbar.setTitle()
を使うよりもgetSupportActionBar().setTitle()
を使うほうが楽なので、getSupportActionBar().setTitle()
のようにnull例外についての煩わしい通知は表示されません。
私はそれを使用して動作させました -
toolbar.post(new Runnable() {
@Override
public void run() {
toolbar.setTitle("My Title");
}
});
MainActivityがあなたのAppCompactActivityであるところで、単にあなたのアダプタでこれを使用してください。どこからでも電話できます。
((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));
私はあなたを助けることができる奇妙な行動をしています。
これは機能していますが、onCreateのみには影響しません。
toolbar.setTitle("title");
OnCreateでこれを使ってみてください。
yourActivityName.this.setTitle("title")
これを試して:
XMLコード
<Android.support.v7.widget.Toolbar
Android:layout_width="match_parent"
Android:layout_height="120dp"
Android:id="@+id/tool_bar"
Android:background="@color/tablayout"
Android:theme="@style/ToolBarStyle"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/app_name"
Android:layout_gravity="center"
Android:id="@+id/toolbar_title"
Android:textSize="18sp"
Android:textColor="@color/white"/>
</Android.support.v7.widget.Toolbar>
Javaコード
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar_text = (TextView)findViewById(R.id.toolbar_title);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setLogo(R.drawable.ic_toolbar);
}
CollapsibleToolbarLayout
とToolbar
を併用している場合は、両方のレイアウトでtitleを設定する必要があります
onCreate
メソッドでツールバーをアクションバーとして設定
protected void setUpToolBar() {
if (mToolbar != null) {
((HomeActivity) getActivity()).setSupportActionBar(mToolbar);
mToolbar.setTitleTextColor(Color.WHITE);
mToolbar.setTitle("List Detail");
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity()
.getSupportFragmentManager().popBackStack();
}
});
((HomeActivity) getActivity()).getSupportActionBar()
.setDisplayHomeAsUpEnabled(true);
}
}
後でsetTitle
メソッドを使ってツールバーのタイトルを単純に更新する
mToolbar .setTitle(productFromShoppingList.getProductName()); mCollapsingToolbar.setTitle(productFromShoppingList.getProductName());
各活動のタイトルを変更する
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pizza);
setTitle(getResources().getText(R.string.title));
}
あなたの目標がツールバーに静的な文字列を設定することであるならば、それをする最も簡単な方法は単純にAndroidManifest.xmlで活動ラベルを設定することです:
<activity Android:name=".xxxxActivity"
Android:label="@string/string_id" />
ツールバーはコードなしでこの文字列を取得します。 (v27ライブラリで私のために働きます。)
SupportActionBar(@sorianiv)の設定後しばらくしてツールバーからタイトルを設定する必要がある人のためにAND your Toolbar
はCollapsingToolbarLayout
の中にあります。これを読んでください:
mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
//toolbar.setTitle(""); // no need to do this
//mToolbarLayout.setTitle("Title"); // if you need an initial title, do this instead
setSupportActionBar(toolbar);
じゃあ後で、
mToolbarLayout.setTitle("New Title");
これは、Android:label
ファイルであなたのアクティビティのAndroidManifest.xml
属性を設定することによって行うことができます。
<activity Android:name="my activity"
Android:label="The Title I'd like to display" />
そしてこの行をonCreate()に追加します。
getSupportActionBar().setDisplayShowTitleEnabled(true);
この特定の設定には直接関係ありませんが、ツールバーをAppBarLayout内にラップしていたXMLから "CollapsingToolbarLayout"を削除すると、すべてが機能することがわかりました。
したがって、この:
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
</Android.support.design.widget.AppBarLayout>
これの代わりに:
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.design.widget.CollapsingToolbarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/collapsingToolbar"
Android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="enterAlways|scroll|snap">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_height="?attr/actionBarSize"
app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
次に、setSupportActionBar()が呼び出される前に、アクティビティのonCreateにタイトルを設定します。
このオプションを必ず追加してください。
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
答えはドキュメントにあります(あなたは ここ を見つけることができます):
ActionBarユーティリティメソッドを使用するには、アクティビティのgetSupportActionBar()メソッドを呼び出します。このメソッドは、appcompat ActionBarオブジェクトへの参照を返します。参照を取得したら、任意のActionBarメソッドを呼び出してアプリバーを調整できます。たとえば、アプリバーを非表示にするには、ActionBar.hide()を呼び出します。
それがあなたが実際に見つけた解決策です。公式文書への参照を与えることを考えただけである(どうやらそれはほとんど読む傾向がない)。