Jak utworzyć pasek akcji, aby logo było pośrodku, a dwa elementy akcji po bokach?Logo ActionBar wyśrodkowane i elementy akcji po bokach
I będzie używać ActionBar Sherlocka.
Jak utworzyć pasek akcji, aby logo było pośrodku, a dwa elementy akcji po bokach?Logo ActionBar wyśrodkowane i elementy akcji po bokach
I będzie używać ActionBar Sherlocka.
Jak zauważyłem w komentarzu, nie jestem do końca pewien, czy którykolwiek z tych zmian ulegnie zmianie z ABS (na pewno nie za wiele), ale ze standardowym paskiem akcji można załadować niestandardowy układ .xml dla twojego pasek akcji. Na przykład można mieć action_bar_title.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/your_desired_background" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:maxLines="1"
android:ellipsize="end"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</RelativeLayout>
Następnie, w swojej działalności, co chcesz wywołać metodę takiego w onCreate():
private void setupActionBar() {
ActionBar ab = getActionBar();
ab.setDisplayShowCustomEnabled(true);
ab.setDisplayShowTitleEnabled(false);
ab.setIcon(R.drawable.your_left_action_icon);
LayoutInflater inflator = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.action_bar_title, null);
TextView titleTV = (TextView) v.findViewById(R.id.title);
Typeface font = Typeface.createFromAsset(getAssets(),
"fonts/your_custom_font.ttf");
titleTV.setTypeface(font);
ab.setCustomView(v);
ab.setHomeAsUpEnabled(true);
}
Aby przejąć kontrolę nad lewym przedmiot działania, można to zrobić w swojej działalności:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.yourRightActionItem:
//do something
return true;
case android.R.id.home: //<-- this will be your left action item
// do something
return true;
default:
return super.onOptionsItemSelected(item);
}
}
oczywiście, upewnij się także wykonać inne niezbędne konfiguracje dla elementów działania w menu xml, jak również. Dotyczy to dowolnych elementów akcji po prawej stronie.
Edycja: Właśnie zobaczyłem w innym komentarzu, który powiedziałeś, że tytuł będzie obrazem. W takim przypadku wystarczy zastąpić TextView użyty w moim przykładzie obrazem ImageView i zignorować kod dostosowywania czcionki w metodzie setupActionBar().
Edycja2: Zaktualizowałem kod Java. Będziesz musiał zrobić ab.setHomeAsUpEnabled (true), a następnie mieć niestandardowy motyw do wprowadzenia niewidocznego (lub być może @ null, chociaż nie wiem, czy Android to zaakceptuje) do rysowania dla domu jako wskaźnika up. Zobacz tutaj (zaczerpnięte z odpowiedzią here :)
<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
<!-- or you could try @null -->
</style>
więc rozwiązanie do pozycji działania po lewej stronie będzie udawać używając przycisku UP jak napisałem w pierwszym komentarzu, prawda? – urSus
Tak, a chcesz dodać niestandardowy styl dla Androida: homeAsUpIndicator, aby nie uzyskać tego wskaźnika z lewej strony. Zaktualizuję więcej kodu. – dennisdrew
Jak ukryć strzałkę bez androida: homeAsUpIndicator? Wymaga poziomu interfejsu API 11, a moje minimum to 8 –