Android移除应用程序图标操作栏

10

大家好,我创建了ActionBar、viewpages和自定义ActionBar。现在我想在ActionBar中删除(隐藏)应用程序图标,但是我使用了"setDisplayShowHomeEnabled(false);"却没有任何反应。这是我的代码:

public class MainActivity extends FragmentActivity implements TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private String[] tabs = { "test1", "test1", "test1", "test1",
        "test1" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    actionBar = getActionBar();
    actionBar.setHomeButtonEnabled(false);
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    //actionBar.setIcon(R.color.white);
    actionBar.setDisplayShowTitleEnabled(true);
    Drawable d = getResources().getDrawable(R.drawable.acttitle);
    getActionBar().setBackgroundDrawable(d);

    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
            | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);

    viewPager = (ViewPager) findViewById(R.id.vp_main);
    viewPager.setAdapter(mAdapter);

    getActionBar().setCustomView(R.layout.menu_example);
     actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM |
     ActionBar.DISPLAY_SHOW_HOME );
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // actionBar.setStackedBackgroundDrawable(getResources().getDrawable(
    // R.drawable.background)); background viewpager

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {

    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}

}

有什么问题吗?如果有人知道解决方案,请帮帮我。谢谢。


看这里,也许会对你有所帮助...http://stackoverflow.com/a/14606388/1458943 - Prashant09
5个回答

29

你使用

 actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM
            | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); 

所以你想获取Home图标。

如果您想在特定活动中隐藏应用程序图标,请使用

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent))); 

如果您想在完整应用程序中隐藏应用程序图标,请使用 setDisplayShowHomeEnabled(false)setDisplayShowTitleEnabled(false)


谢谢,我添加了(actionBar.setDisplayShowHomeEnabled(false);actionBar.setDisplayShowTitleEnabled(false);),应用程序图标已隐藏,但我得到了不同的设计。我的ViewPager在自定义ActionBar上方,这是一种不同的设计:( - user3272799
2
在特定的活动中,setIcon(android.R.color.transparent) 似乎足以隐藏应用程序图标。 - crubio

9

请尝试以下操作...

setDisplayShowHomeEnabled(false);

更多参考资料

更新 ::- 如果您使用XML自定义了操作栏,则可以尝试类似以下方式..

<item name="android:displayOptions"></item>

这将最终隐藏您的应用程序图标和标题...

像在stack上建议的那样,您还可以尝试一些组合,例如...

getSupportActionBar().setHomeButtonEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setIcon(R.color.transparent);
    getSupportActionBar().setDisplayShowTitleEnabled(true);

更新2

操作栏(Action Bar)会自动为您调整所有内容。 例如:如果您在标题栏中有很多内容,则Action Bar会将标题调整为“YourPr...”,而不是完整的标题“YourProject”。

您无需担心这个问题。

更新3

如果有人想要自定义ActionBar,则可以轻松实现如下...

actionBar = getSupportActionBar();

        actionBar.setCustomView(R.layout.action_bar_confirm_cabs);

        fare_ll = (TextView) actionBar.getCustomView().findViewById(
                R.id.fare_ll);
        confirm_back = (LinearLayout) actionBar.getCustomView().findViewById(
                R.id.confirm_cabs_back);
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

现在你已经有了你的文本视图或者其他你想要的控件,比如你可以在这里添加一个按钮...

现在只需要应用点击监听器或者其他你喜欢的操作即可...

希望对你有所帮助!


请查看我的代码,我使用了自定义操作栏,可能是个问题。 - user3272799
谢谢,任务已完成。但是我在大屏幕分辨率上测试我的应用程序时,发现与小屏幕分辨率的设计不同。你知道可能出了什么问题吗? - user3272799
谢谢,我使用了您的代码,但是在大屏幕分辨率下有问题..我在大屏幕和小屏幕分辨率之间有不同的设计。(请看我的代码)也许问题出在这一行(getActionBar().setCustomView(R.layout.menu_example);)。 - user3272799
如果您需要为操作栏定义自定义视图,则可以通过在样式中定义来使用同样的方法。只需遵循Android开发者网站。那里有很多可用资源。 - AndroidHacker

8

有多种方法可以实现:

运行时处理:

getActionBar().setIcon(
       new ColorDrawable(getResources().getColor(android.R.color.transparent)));  


getActionBar().setDisplayShowHomeEnabled(false);

从xml中:

<item name="android:icon">@android:color/transparent</item>

请在以下帖子中查找更多有关IT技术的信息:如何在Android应用程序的操作栏中删除图标/徽标


8

使用

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent))); 

或者

getActionBar().setCustomView(R.layout.menu_example);
         actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM |
         ActionBar.DISPLAY_SHOW_HOME ); 

将显示主页图标。因此,只使用getSupportActionBar().setCustomView(R.layout.menu_example);

要隐藏应用程序图标,请使用

getSupportActionBar().setDisplayShowHomeEnabled(false); getSupportActionBar().setDisplayShowTitleEnabled(false);


0

我的要求是保留返回按钮和操作栏标题,但不显示应用程序图标/徽标。

这对我有用:

// 显示返回按钮

getActionBar().setDisplayHomeAsUpEnabled(true);

//用于隐藏标志:

getActionBar().setLogo(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接