Logo ActionBar wyśrodkowane i elementy akcji po bokach

Jak zrobić actionbar, aby mieć logo w środku i dwa elementy akcji po bokach?

Tutaj wpisz opis obrazka

Będę używał ActionBar Sherlock.

Author: adneal, 2012-10-05

1 answers

Jak zauważyłem w komentarzu, nie jestem do końca pewien, czy cokolwiek z tego zmieni się z ABS( jestem pewien, że niewiele by), ale za pomocą standardowego paska akcji można załadować niestandardowy układ .xml dla tytułu paska akcji. Na przykład, możesz 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 aktywności, chciałbyś wywołać taką metodę 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 elementem akcji, możesz to zrobić w swojej aktywnoś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ę, że wykonaj również inne niezbędne ustawienia dla elementów akcji w menu xml. Dotyczy to wszystkich prawostronnych elementów akcji.

Edit: właśnie widziałem w innym komentarzu napisałeś, że tytuł będzie obrazkiem. Jeśli tak jest, po prostu zastąp widok tekstu, którego użyłem w moim przykładzie ImageView i zignoruj kod dostosowywania czcionki w metodzie setupActionBar ().

Edit2: zaktualizowałem Mój kod Java. Będziesz musiał zrobić ab.setHomeAsUpEnabled (true), a następnie mieć własny motyw aby zaimplementować niewidoczny (a może @null chociaż Nie wiem, czy Android zaakceptuje to) rysowalny dla domu jako wskaźnik up. Zobacz tutaj (zaczerpnięte z Odpowiedzi tutaj:)
<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
    <!-- or you could try @null -->
</style>
 40
Author: dennisdrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:26