Как установить логотип ActionBar в текст (TextView)?

Я пытался сделать логотип ActionBar или кнопку «Вверх» текстом вместо изображения. actionbar.setLogo(); принимает только доступный ресурс. Раздувание макета с помощью TextView не помогло.

В основном, то, что я пытаюсь сделать, это:

введите здесь описание изображения

Первый — из нового приложения DeskClock из Android 4.2, а второй — из приложения «Контакты». Я проверил код на GitHub, но ничего не нашел.


person Chris95X8    schedule 05.01.2013    source источник
comment
Стилизованная панель действий   -  person Adil Soomro    schedule 05.01.2013


Ответы (2)


Вот реализация варианта № 1 @CommonsWare, работает отлично.

TextView upTextView = (TextView) getLayoutInflater().inflate(
        R.layout.up_text, null);
upTextView.setText("CITIES");
upTextView.measure(0, 0);
upTextView.layout(0, 0, upTextView.getMeasuredWidth(), 
        upTextView.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(upTextView.getMeasuredWidth(),
        upTextView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
upTextView.draw(canvas);
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);

R.layout.up_text:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="4dp"
    android:paddingRight="4dp"
    android:textColor="#f00"
    android:textSize="20sp"
    android:textStyle="bold" />
person Matthias Robbers    schedule 05.01.2013

Без подготовки:

Вариант № 1. Нарисуйте текст (TextView или напрямую) на Canvas с Bitmap, а затем укажите BitmapDrawable на setLogo().

Вариант № 2: скройте значок и логотип и используйте setCustomView(), чтобы получить изображение курсора и текст.

person CommonsWare    schedule 05.01.2013
comment
Я думаю, что вариант № 2 имеет тот недостаток, что вы не можете отобразить заголовок, потому что заголовок находится слева от пользовательского представления. Но вариант №1 идеален, см. мой ответ. - person Matthias Robbers; 05.01.2013
comment
@matthias: Ваше пользовательское представление может содержать заголовок TextView, а также знак вставки и другой текст. При этом я рад, что у вас есть что-то, что работает к вашему удовлетворению. - person CommonsWare; 05.01.2013