mostrar o ícone na barra de acções/barra de ferramentas com o AppCompat-v7 21
eu tentei isto - mas ainda não vejo o ícone como antes:
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
parece funcionar quando eu uso barra de ferramentas personalizada-mas isso me forçaria a tocar em todos os layouts-há uma maneira melhor de fazer isso?
15 answers
getSupportActionBar().setDisplayShowHomeEnabled(true);
Juntamente com
getSupportActionBar().setIcon(R.drawable.ic_launcher);
Nos modernos Desenvolvedores Android UI devem se apoiar mais em um visualmente esquema de cores distinto para as barras de ferramentas do que no seu ícone de Aplicação. O o uso do ícone da aplicação mais o título como um layout padrão é desencorajado on API 21 devices and newer.
Se discordar pode tentar com:
Para criar a barra de ferramentas em 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" />
Na sua actividade:
@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);
}
Use o método setLogo () para definir o ícone. código fonte.
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_logo);
getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
Assim como:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
A coisa mais simples a fazer; basta adicionar:
app:navigationIcon="@drawable/ic_action_navigation_menu">
Para a marca <android.support.v7.widget.Toolbar
Onde @drawable/ic_action_navigation_menu
é o nome do ícone
Uma forma melhor de definir várias opções:
setIcon/setLogo
o método só funcionará se tiver definido as opções para deslocar tente isto -
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);
Também pode definir opções para mostrar o logótipo(basta adicionar constante ActionBar.DISPLAY_USE_LOGO
). Mais informações - deslocamentos
Tente usar:
ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
Se quiser definir o ícone home ou back (não o logótipo ou o ícone estático) para que possa usar
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
Ou faça uma disposição XML chamar o 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>
Agora na sua actividade principal adicione esta linha
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar" />
Tenta isto:
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);
Para ícone estático
Para A Barra De Acção:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
Para A Barra De Ferramentas:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
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);
}
Se não quiser definir a sua barra de ferramentas como barra de Acção usando a barra de apoio , poderá adicionar um logótipo ao lado do seu ícone de navegação (se tiver um botão de apoio, por exemplo) como este:
toolbar.setLogo();
Ou em xml
<android.support.v7.widget.Toolbar
....
android:logo="@drawable/logo"
app:logo="@drawable/logo"/>
E mesmo que tenha um título definido na barra de ferramentas, o título irá aparecer à mesma.
Ex: o controlo a verde na imagem abaixo é o logótipo
Em Xamarin.Android você pode usar estes:
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);
A Usar O Android.Suportar.V7.Aplicacao.A AppCompatActivity é necessária.
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);
No Kotlin fiz o seguinte para mostrar o ícone:
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)