web-dev-qa-db-ja.com

AppCompat-v7でアクションバー/ツールバーにアイコンを表示する21

私はこれらを試してみました - しかしそれでも以前のようにアイコンが表示されません。

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

私がカスタムツールバーを使うとき、それはうまくいくようです - しかし、それは私にすべてのレイアウトに触れることを強いるでしょう - そうするためのより良い方法はありますか?

124
ligi
getSupportActionBar().setDisplayShowHomeEnabled(true);

に加えて

getSupportActionBar().setIcon(R.drawable.ic_launcher);
251
nadavfima

現代のAndroid UIでは、開発者はアプリケーションアイコンよりも、視覚的に異なるツールバーの配色に頼るべきです。アプリケーションアイコンとタイトルを標準レイアウトとして使用することは、API 21以降のデバイスでは推奨されません。

同意しない場合は、次の方法で試すことができます。

XMLでツールバーを作成するには

<Android.support.v7.widget.Toolbar  
    Android:id="@+id/my_awesome_toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

あなたの活動の中で:

@Override
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

アイコンを設定するには、 setLogo() メソッドを使用します。 コードソース。

32
LordRaydenMK

これは私のために働いた:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

と同様:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
14
Michał K

最も簡単なこと。追加するだけです:

app:navigationIcon="@drawable/ic_action_navigation_menu">

<Android.support.v7.widget.Toolbarタグへ

@drawable/ic_action_navigation_menuはアイコンの名前です。

14
Pila

複数のオプションを設定するためのより良い方法:

setIcon/setLogoメソッドはあなたがDisplayOptionsを設定した場合にのみ動作しますこれを試してみてください -

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);

LOGOを表示するためのオプションを設定することもできます(定数ActionBar.DISPLAY_USE_LOGOを追加するだけです)。詳しい情報 - displayOptions

12
Vintesh

試してみてください。

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
6
Chris Banes

あなたが使用することができるようにあなたが家または戻るアイコン(ロゴや静的なアイコンではない)を設定したいならば

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
5
smoothumut
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

またはは、XMLレイアウトでtool_bar.xmlを呼び出します。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:background="@color/colorPrimary"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark"
    Android:elevation="4dp">

    <RelativeLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">

    <ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@color/colorPrimary"
        Android:src="@drawable/ic_action_search"/>

    </RelativeLayout>
</Android.support.v7.widget.Toolbar>

今あなたの主な活動でこの行を追加する

 <include
     Android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />
4
Skitty

アクションバーの場合:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

ツールバーの場合:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
3
Peter Ivanov

これを試して:

import Android.support.v7.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher);

so your icon will be used for Home / back
or

import Android.support.v7.app.ActionBar;
import Android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(true);
    actionbar.setIcon(R.drawable.ic_launcher);

静的アイコン用

2
Odilon Cenamo
toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + "")));


public Drawable resize(Drawable image, int width, int height)
{
    Bitmap b = ((BitmapDrawable) image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false);
    return new BitmapDrawable(getResources(), bitmapResized);
}
1
Hardik Vasani

setSupportActionBarを使用してツールバーをアクションバーとして設定したくない場合は、ナビゲーションアイコンの横にロゴを追加できます(たとえば、戻るボタンがある場合)。

toolbar.setLogo();

またはxmlで

<Android.support.v7.widget.Toolbar 
    ....
    Android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>

ツールバーにタイトルが設定されていても、タイトルは表示されたままになります。

例:下の画像の緑色のチェックはロゴです

Toolbar with navigation icon, logo and title

1
Malek Hijazi

これを試して。私にとってはうまくいった

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
0
Matteo

Kotlinでは、アイコンを表示するために次のようにしました。

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
0
Leon

Xamarin.Androidでは、これらを使用することができます。

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);

android.Support.V7.App.AppCompatActivityを使用する必要があります。

0
Daniele D.