从 getSupportActionBar() 获取 ImageView
Get ImageView from getSupportActionBar()
我正在使用 getSupportActionBar().setIcon(R.drawable.ic_transparent);
设置工具栏的图标。如何从该图标中获取 ImageView
?我需要图标的Rect
。
我正在尝试使用 Toolbar
而不是旧的操作栏来实现 this 的一个版本。
编辑:我想出了一个替代解决方案,将 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>
不好说。
正确答案:您不应该乱用不是您自己设计的内部小部件(即,如果没有 ImageView
的 getter 方法,您应该将其留在原处).参见 here。
有点老套的答案:您可能想试试 this custom method。它根据 ContentDescription
搜索视图。我从未尝试过,但它可以工作。
我看了一下,只是看到了一个私有函数 getActionBarIconView(),其中 return 在 activity NoBoringActionBarActivity 中的图像视图,如果需要使用它,只需将其更改为 public在外部片段中。
我通过将自己的ImageView和TextView添加到工具栏来替换徽标和标题来解决它,然后通过将工具栏移动到布局的末尾来修复android 4.0-4.4上不可见的标题文件。我不确定为什么我必须这样做,但它奏效了。
我正在使用 getSupportActionBar().setIcon(R.drawable.ic_transparent);
设置工具栏的图标。如何从该图标中获取 ImageView
?我需要图标的Rect
。
我正在尝试使用 Toolbar
而不是旧的操作栏来实现 this 的一个版本。
编辑:我想出了一个替代解决方案,将 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>
不好说。
正确答案:您不应该乱用不是您自己设计的内部小部件(即,如果没有 ImageView
的 getter 方法,您应该将其留在原处).参见 here。
有点老套的答案:您可能想试试 this custom method。它根据 ContentDescription
搜索视图。我从未尝试过,但它可以工作。
我看了一下,只是看到了一个私有函数 getActionBarIconView(),其中 return 在 activity NoBoringActionBarActivity 中的图像视图,如果需要使用它,只需将其更改为 public在外部片段中。
我通过将自己的ImageView和TextView添加到工具栏来替换徽标和标题来解决它,然后通过将工具栏移动到布局的末尾来修复android 4.0-4.4上不可见的标题文件。我不确定为什么我必须这样做,但它奏效了。