Android 在XML中设置工具栏徽标

Android 在XML中设置工具栏徽标,android,android-layout,material-design,android-toolbar,Android,Android Layout,Material Design,Android Toolbar,可以用xml设置工具栏徽标吗?到目前为止,我已经尝试过: 一, 我可以从以下代码设置徽标: ((Toolbar) findViewById(R.id.toolbar)).setLogo(R.drawable.my_logo); 但我想从布局XML或样式/主题XML设置徽标。要显示徽标图标,请在运行时在ActionBar中设置此图标 getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIc

可以用xml设置工具栏徽标吗?到目前为止,我已经尝试过:

一,

我可以从以下代码设置徽标:

((Toolbar) findViewById(R.id.toolbar)).setLogo(R.drawable.my_logo);

但我想从布局XML或样式/主题XML设置徽标。

要显示徽标图标,请在运行时在ActionBar中设置此图标

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(@drawable/my_logo);

实际上,您可以,但它不能很好地与工具栏上的名称配合使用。您只需将ImageView放入工具栏的主体中,就像使用布局一样

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

   <ImageView
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   app:logo="@drawable/my_logo"/>

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

app:logo="@drawable/my_logo"

更新

将Linearlayout添加到工具栏xml标记中

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/grey">

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/media_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:contentDescription="new post image"
            android:scaleType="centerCrop"
            android:visibility="visible" />
        <TextView
            android:id="@+id/toolbar_subtitle"
            android:textSize="14sp"
            android:layout_gravity="center"
            android:textColor="@color/black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>


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

答案可能是:

    <Toolbar
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:id="@+id/atc_toolbar"
        android:background="?android:attr/colorPrimaryDark"
        android:elevation="4dp"
        android:navigationIcon="@android:drawable/ic_menu_compass"
        android:logo="@android:drawable/ic_menu_view"
        android:title="My application">
    </Toolbar>

在我的例子中,结果如下所示:

如果由于某些原因,徽标未显示,则尝试开始一个新的、全新的项目,只添加布局宽度、布局高度、id和徽标属性。记住通过setActionBar或setSupportActionBar在onCreate中添加工具栏。 当做 P.

仅使用xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

<style name="ActionbarLogo">
    <item name="android:logo">@drawable/ic_menu_camera</item>
    <item name="android:displayOptions">useLogo</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:actionBarStyle">@style/ActionbarLogo</item>
    <item name="windowNoTitle">true</item>
</style>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@可绘图/ic\U菜单\U摄像头
useLogo
假的
@款式/ActionBar标志
真的
现在将AppTheme.NoActionBar主题应用于您的活动(如果要删除工具栏标题,请使用getSupportActionBar().setDisplayShowTitleEnabled(false);在setSupportActionBar(工具栏)之后;)


在您的代码中放入 getSupportActionBar().setLogo(R.drawable.icon);
它会起作用的这解决了我的问题。在布局文件夹中创建此文件:


在activity.java中执行此操作:

Toolbar-Toolbar=(Toolbar)findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
工具栏.setNavigationIcon(R.drawable.my_徽标);
在activity.xml中



我感兴趣的是从XML(布局或样式)来做这件事。我不感兴趣的是自定义导航图标(“备份/备份按钮”),而是自定义徽标(位于导航图标右侧)。谢谢,但我想设置标准徽标,而不是引入自定义子项(ren)。我认为通过自定义,您可以实现所需的输出,让我知道是否可以使用任何工具栏xml属性。谢谢,但我想设置标准徽标,而不是引入自定义子项。他显然要求的是xml方式,而不是Java代码。您的代码1。代码2。完全相同,app:logo=“@drawable/my_logo”确实在我的工具栏中设置了一个徽标。@SunilKumar它们不一样——第一个使用的是
android:logo
,第二个--
app:logo
哦,对不起。我还得出结论,如果我们想在工具栏上放置徽标,就不应该使用工具栏。工具栏不提供任何自定义徽标大小和位置的方法。@SunilKumar我相信它只允许自定义内部布局,正如建议的那样。
app:logo="@drawable/my_logo"
app:navigationIcon="@drawable/my_logo"
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/grey">

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/media_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:contentDescription="new post image"
            android:scaleType="centerCrop"
            android:visibility="visible" />
        <TextView
            android:id="@+id/toolbar_subtitle"
            android:textSize="14sp"
            android:layout_gravity="center"
            android:textColor="@color/black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>


</android.support.v7.widget.Toolbar>
    <Toolbar
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:id="@+id/atc_toolbar"
        android:background="?android:attr/colorPrimaryDark"
        android:elevation="4dp"
        android:navigationIcon="@android:drawable/ic_menu_compass"
        android:logo="@android:drawable/ic_menu_view"
        android:title="My application">
    </Toolbar>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

<style name="ActionbarLogo">
    <item name="android:logo">@drawable/ic_menu_camera</item>
    <item name="android:displayOptions">useLogo</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:actionBarStyle">@style/ActionbarLogo</item>
    <item name="windowNoTitle">true</item>
</style>
<activity
  android:name=".MainActivity"
  android:theme="@style/AppTheme.NoActionBar">
  <intent-filter>
      <action android:name="android.intent.action.MAIN"/>

      <category android:name="android.intent.category.LAUNCHER"/>
  </intent-filter>
</activity>