Próbowałem tych - ale nadal nie widzę ikony takiej jak wcześniej:
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
Wydaje się, że działa, gdy używam niestandardowego paska narzędzi - ale to zmusiłoby mnie do dotknięcia wszystkich układów - czy istnieje lepszy sposób na zrobienie tego?
Odpowiedzi:
getSupportActionBar().setDisplayShowHomeEnabled(true);
wraz z
getSupportActionBar().setIcon(R.drawable.ic_launcher);
źródło
getSupportActionBar()
może tonull
zależeć od stylu Twojej aktywności..setHomeAsUpIndicator
i obsługiwać w swoimonOptionsItemSelected
.Jeśli się nie zgadzasz, możesz spróbować:
Aby utworzyć pasek narzędzi w 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" />
W Twojej działalności:
@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); }
Użyj metody setLogo () , aby ustawić ikonę. Źródło kodu.
źródło
Settings
Aktywność Sklepu Play ma ikonę aplikacji na pasku akcji. To jest nadal dostępne po aktualizacji materiału.To zadziałało dla mnie:
getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setLogo(R.drawable.ic_logo); getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
jak również:
getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
źródło
najprostsza rzecz do zrobienia; poprostu dodaj:
app:navigationIcon="@drawable/ic_action_navigation_menu">
do
<android.support.v7.widget.Toolbar
tagugdzie
@drawable/ic_action_navigation_menu
jest nazwa ikonyźródło
android.R.id.home
identyfikator w plikuonOptionsItemSelected(...)
.Lepszy sposób na ustawienie wielu opcji:
setIcon/setLogo
zadziała tylko wtedy, gdy ustawiłeś DisplayOptions Spróbuj tego -actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); actionBar.setIcon(R.drawable.ic_launcher);
Możesz także ustawić opcje wyświetlania LOGO (wystarczy dodać stałą
ActionBar.DISPLAY_USE_LOGO
). Więcej informacji - displayOptionsźródło
Spróbuj użyć:
ActionBar ab = getSupportActionBar(); ab.setHomeButtonEnabled(true); ab.setDisplayUseLogoEnabled(true); ab.setLogo(R.drawable.ic_launcher);
źródło
Dla paska akcji:
getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
W przypadku paska narzędzi:
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
źródło
setIcon
nie pozwala na kliknięcie przycisku, gdzie jaksetHomeAsUpIndicator
i obsługa tegoonOptionsItemSelected
działa. Dzięki!jeśli chcesz ustawić ikonę domu lub wstecz (nie logo lub ikonę statyczną), aby móc używać
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
źródło
.xml
R.mipmap.ic_launcher
R.mipmap.ic_launcher_round
getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_launcher);
LUB spraw, aby układ XML wywołał rozszerzenie
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>
Teraz w swojej głównej działalności dodaj tę linię
<include android:id="@+id/tool_bar" layout="@layout/tool_bar" />
źródło
Jeśli nie chcesz ustawiać paska narzędzi jako paska akcji za pomocą setSupportActionBar , możesz dodać logo obok ikony nawigacji (jeśli masz na przykład przycisk Wstecz) w następujący sposób:
toolbar.setLogo();
lub w formacie xml
<android.support.v7.widget.Toolbar .... android:logo="@drawable/logo" app:logo="@drawable/logo"/>
Nawet jeśli masz tytuł ustawiony na pasku narzędzi, będzie on nadal wyświetlany.
Np. Zielony znaczek na poniższym obrazku to logo
źródło
Spróbuj tego:
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);
dla ikony statycznej
źródło
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); }
źródło
W Xamarin.Android możesz użyć tych:
SupportActionBar.SetHomeButtonEnabled(true); SupportActionBar.SetDisplayShowHomeEnabled(true); SupportActionBar.SetDisplayUseLogoEnabled(true); SupportActionBar.SetIcon(Resource.Drawable.ic_launcher); SupportActionBar.SetDisplayShowTitleEnabled(false);
korzystanie z Android.Support.V7.App.AppCompatActivity jest wymagane.
źródło
Spróbuj tego. U mnie to zadziałało
getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayUseLogoEnabled(true);
źródło
W Kotlinie wykonałem następujące czynności, aby wyświetlić ikonę:
supportActionBar?.setDisplayShowHomeEnabled(true) supportActionBar?.setIcon(R.drawable.ic_icon_small)
źródło