2015-01-05 5 views
1

Я использую getSupportActionBar().setIcon(R.drawable.ic_transparent);, чтобы установить значок моей панели инструментов. Как получить ImageView с этой иконки? Мне нужен значок Rect.Получить ImageView из getSupportActionBar()

Я пытаюсь реализовать версию this с помощью Toolbar вместо старых панелей действий.

EDIT: Я придумал альтернативное решение, которое помещает TextView и ImageView на панель инструментов вместо использования встроенного логотипа и названия. Это отлично работает на Android 5.0, но текст не отображается ни о чем ниже. Любые предложения по устранению этого или выше?

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/actionBarSize" 
    android:background="@android:color/transparent" 
    android:elevation="10dp" 
    tools:ignore="UnusedAttribute"> 

    <ImageView 
     android:id="@+id/toolbar_icon" 
     android:layout_width="?android:attr/actionBarSize" 
     android:layout_height="?android:attr/actionBarSize" 
     android:padding="10dp" 
     android:scaleType="fitStart" 
     android:src="@drawable/ic_transparent" /> 

    <TextView 
     android:id="@+id/toolbar_title" 
     style="@style/Base.TextAppearance.AppCompat.Widget.ActionBar.Title" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:gravity="center_vertical" 
     android:text="hello" /> 

</android.support.v7.widget.Toolbar> 

ответ

1

Трудно сказать.

Правильный ответ: вы не должны путаться с внутренними виджетами, которые не были разработаны вами самим (то есть, если для этого нет метода геттера, вы должны, вероятно, оставить его там, где он есть). См. here.

Немного более хакерский ответ: вы можете попробовать this custom method. Он ищет просмотры в зависимости от их ContentDescription. Я никогда не пробовал, но это могло сработать.

+0

Где я могу найти описание для логотипа? Это другой элемент из значка навигации AFAIK. – sargunster

+0

Я думаю, что это должно сработать. Если это не так, используйте toolbar.setNavigationIcon() вместо actionbar.setIcon(). – natario

+0

Я не хочу использовать значок навигации, потому что он доступен для просмотра. В любом случае, я решил это сейчас. – sargunster

0

Я даю ему взглянуть и только что увидел частную функцию getActionBarIconView(), которая возвращает изображение в действии NoBoringActionBarActivity, просто измените его на общедоступное, если вам нужно использовать его во внешнем фрагменте.

0

Я решил это, добавив свой собственный ImageView и TextView на панель инструментов, чтобы заменить логотип и заголовок, а затем зафиксировал невидимый заголовок на Android 4.0-4.4, переместив панель инструментов в конец файла макета. Я не уверен, почему я должен был это сделать, но это сработало.

Смежные вопросы