SherlockActionBar:如何针对actionBar调整CustomView

题:

我怎么能取回头衔?


这是截图(缺少标题):

在此处输入图像描述

操作栏设置:

ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("My Title"); actionBar.setIcon(drawable.dropdown_user); View mLogoView = LayoutInflater.from(this).inflate(R.layout.mLogoView, null); actionBar.setCustomView(mLogoView); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); 

mLogoView.xml:

      

我能想到的第一件事就是尝试设置

  

到你的RelativeLayout 。 因为在Android中默认情况下,每个视图都是从左到右添加的(如果您未在代码中指定其他内容)。

如果这不起作用,我会添加android:layout_width="90dip"或其他一些值,具体取决于图像和测试。 第二种选择更像是一种解决方法,但我认为它适用于所有设备。

编辑:

正如我发现在ActionBar中使用RelativeLayout和Custom Views有一点问题,所以更好的选择是使用LinearLayout并通过代码设置LayoutParams 。 将您的xml更改为如下所示:

 < ?xml version="1.0" encoding="utf-8"?>    

在你的MainActivity.class中使用:

 import com.actionbarsherlock.app.ActionBar.LayoutParams; .... ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("OMG"); LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL); View customNav = LayoutInflater.from(this).inflate(R.layout.img, null); // layout which contains your button. actionBar.setCustomView(customNav, lp); actionBar.setDisplayShowCustomEnabled(true);