从getSupportActionBar获取ImageView()

时间:2015-01-05 23:21:46

标签: android toolbar material-design

我使用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>

3 个答案:

答案 0 :(得分:1)

很难说。

正确答案:你不应该混淆不是由你自己设计的内部小部件(即,如果那不是ImageView的getter方法,你应该把它放在原来的位置)。请参阅here

更多hacky回答:您可能想尝试this custom method。它会根据ContentDescription搜索视图。我从未尝试过,但它可以奏效。

答案 1 :(得分:0)

我看一看,只看到一个私有函数getActionBarIconView(),它返回活动内部的一个imageview NoBoringActionBarActivity,如果需要在外部片段中使用它,只需将其更改为public。

答案 2 :(得分:0)

我通过将自己的ImageView和TextView添加到工具栏来替换徽标和标题来解决它,然后通过将工具栏移动到布局文件的末尾来修复android 4.0-4.4上的隐形标题。我不确定为什么我必须这样做,但它确实有效。