Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用AppCompat-v7 21在操作栏/工具栏中显示图标_Android_Android Appcompat - Fatal编程技术网

Android 使用AppCompat-v7 21在操作栏/工具栏中显示图标

Android 使用AppCompat-v7 21在操作栏/工具栏中显示图标,android,android-appcompat,Android,Android Appcompat,我尝试了这些-但仍然没有像以前那样看到图标: getSupportActionBar().setLogo(R.drawable.ic_launcher); getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_launcher); 当我使用自定义工具栏时,它似乎可以工作-但这会迫使我触摸所有布局-有更好的方法吗?尝试使用: ActionBar ab =

我尝试了这些-但仍然没有像以前那样看到图标:

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
当我使用自定义工具栏时,它似乎可以工作-但这会迫使我触摸所有布局-有更好的方法吗?

尝试使用:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
在现代Android用户界面中,开发人员应该更多地依赖于一个可视化的界面 工具栏的颜色方案与其应用程序图标上的颜色方案不同。这个 不鼓励将应用程序图标和标题用作标准布局 在API 21设备和更新版本上

如果您不同意,可以尝试:

要在XML中创建工具栏,请执行以下操作:

<android.support.v7.widget.Toolbar  
    android:id="@+id/my_awesome_toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />
使用该方法设置图标。

连同

getSupportActionBar().setIcon(R.drawable.ic_launcher);
这对我很有用:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
以及:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

设置多个选项的更好方法:

setIcon/setLogo
方法只有在设置了DisplayOptions的情况下才有效-

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);

您还可以设置显示徽标的选项(只需添加常量
ActionBar.DISPLAY\u USE\u LOGO
)。更多信息-

如果要设置主页或主页图标(而不是徽标或静态图标),则可以使用

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
制作一个XML布局调用
工具栏.XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:elevation="4dp">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:src="@drawable/ic_action_search"/>

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

现在在您的主要活动中添加这一行

 <include
     android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />

试试这个:

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher);

so your icon will be used for Home / back
or

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(true);
    actionbar.setIcon(R.drawable.ic_launcher);

对于Xamarin.Android中的静态图标,您可以使用以下选项:

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);

需要使用Android.Support.V7.App.AppCompatActivity。

试试这个。对我来说,它奏效了

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);

最简单的事情;只需添加:

app:navigationIcon="@drawable/ic_action_navigation_menu">
到操作栏的

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
对于工具栏:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

如果您不想使用设置支持ActionBar将工具栏设置为操作栏,您可以在导航图标旁边添加徽标(例如,如果您有后退按钮),如下所示:

toolbar.setLogo();
或者使用xml

<android.support.v7.widget.Toolbar 
    ....
    android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>

在Kotlin中,我做了以下操作来显示图标:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)

听起来很有希望-但仍然没有图标:-(你可以添加你的活动类,在那里你已经添加了操作栏的东西?我只想指出,当前Play Store
Settings
activity在操作栏中有应用程序图标。在材料更新之后,这仍然存在。请注意
getSupportActionBar()
可能是
null
取决于您的活动的样式。它仍然没有显示图标。我使用了getSupportActionBar().setDisplayHomeAsUpEnabled(true);getSupportActionBar().setIcon(R.drawable.ic_app_图标);getSupportActionBar().setTitle(“标签”);为什么图标显示在标题栏的中间?我想要标题栏左侧的图标。请帮助。。Thanks@Meenaxi您应该使用setDisplayShowHomeEnabled(true);这一点对我很有用。请注意,设置图标并不能使其可单击。如果您要查找可单击的图标,则需要使用
。设置HomeAsupIndicator
,并在您的
OnOptions ItemSelected
中处理它。这是正确的答案,因为部署外观和行为仅此项给了我正常的外观(大小、边距、标题和图标之间的偏移),即使使用vector launcher(
.xml
)也可以正常工作,如
R.mipmap.ic_launcher
R.mipmap.ic_launcher\u round
,我将其用作徽标/静态图标,因为其他解决方案工作得很糟糕!这是在工具栏中添加导航图标的正确且最简单的方法。如果你想检查导航图标的点击,你可以检查
android.R.id.home
您的
onoptionItemSelected(…)
中的ID。ActionBar和工具栏的两个代码之间没有区别,这是故意的吗?ActionBar的代码应该是:getActionBar().setDisplayHomeAsUpEnabled(true);getActionBar().setHomeAsUpIndicator(R.drawable.ic\u action\u back);这实际上就是方法。仅使用
setIcon
不允许单击按钮,其中as
setHomeAsUpIndicator
并在
onOptionsItemSelected
中处理它会带来好处。谢谢!有许多不必要的方法,与icon无关
toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + "")));


public Drawable resize(Drawable image, int width, int height)
{
    Bitmap b = ((BitmapDrawable) image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false);
    return new BitmapDrawable(getResources(), bitmapResized);
}
toolbar.setLogo();
<android.support.v7.widget.Toolbar 
    ....
    android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)