Android工具栏后退箭头,带有WhatsApp等图标

如何在Android工具栏中显示带有后箭头的图标,如WhatsApp?

我使用下面的代码在工具栏中设置后退箭头和图标。

toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); toolbar.setLogo(icon); 

但我得到的结果如下图所示。

在此处输入图像描述

后箭头后我想立即图标。 我不希望在WhatsApp下面的图像下面的后箭头和图标之间有任何差距。

在此处输入图像描述

如何在WhatsApp工具栏中设置带有后退箭头的图标?

据我所知, WhatsApp没有使用App-compat支持库工具栏Whatsapp正在使用自定义操作栏设置

 actionBar.setCustomView(R.layout.conversation_actionbar); 

附件是Whatsapp正在使用的conversation_actionbar.xml

                   

但我建议你遵循Materail设计规则并使用App-compat支持库的ToolBar

您可以获得以下结果,如下图所示 xPxIA.png

通过使用以下代码

your_activity.xml:

      

toolbar_conversation.xml:

           

Activity.java

 final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_chats); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); toolbar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("Toolbar","Clicked"); } }); 

等待它, Whatsapp将来会转移到App-compat支持库。

 getSupportActionBar().setDisplayShowHomeEnabled(true); 

随着

 getSupportActionBar().setIcon(R.drawable.ic_launcher); 

您似乎需要设置三个与操作栏相关的值来显示图标:

actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowHomeEnabled(true); actionBar.setIcon(R.drawable.ic_cast_dark);

我原以为setDisplayHomeAsUpEnabled' and 'setIcon应该已经足够但似乎没有。

我正在使用android.support.v7.app.ActionBar

您可以通过创建包含箭头和图像图标的自定义Drawable来实现此结果,然后将其添加到工具栏toolbar.setNavigationIcon(drawable) ,如下所示。

  setSupportActionBar(mBinding.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); Drawable drawable = new Drawable() { @Override public void draw(Canvas canvas) { int width = canvas.getWidth(); int height = canvas.getHeight(); Bitmap bMap = CircularImageView.getCircularBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.beautiful_eyes_small)); canvas.drawBitmap(bMap,(width-(bMap.getWidth())), (height/2)-(bMap.getHeight()/2), null); Bitmap bMap2 = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back); canvas.drawBitmap(bMap2,0, (height/2)-(bMap2.getHeight()/2), null); } @Override public void setAlpha(int i) { } @Override public void setColorFilter(ColorFilter colorFilter) { } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } }; mBinding.toolbar.setNavigationIcon(drawable); 

结果工具栏

您可以使用以下代码设置主页图标的填充

 ((ImageView) findViewById(android.R.id.home)).setPadding(x, x, x, x); x = set your value. 

好吧,我认为你应该尝试在后退按钮图像中进行一些编辑,例如应用一些简洁性来减少图像宽度并使其透明。 可能会有所帮助

您不能使用工具栏中的常规后退箭头来执行此操作,因为它具有minWidth 56dp和scaleType中心,您可以执行以下操作:

     

并由你自己处理ibCustomBack。