Removing left arrow from the actionbar in android?

2019-01-22 12:32发布

问题:

I want to remove the left arrow from the action bar and only icon and title needed.

My code:

getSupportActionBar().setIcon(R.drawable.logo);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle(R.string.dashboardtitle);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);

But this doesn't remove the left arrow . Any help!!

回答1:

According to specification android specification: To enable the icon for up navigation (which displays the "up" indicator next to the icon), call setDisplayHomeAsUpEnabled(true) on your ActionBar:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    ...
}

So you should set actionBar.setDisplayHomeAsUpEnabled(false);

UPDATE: I test next code with ActionBar sherlock and it's work. There is no back arrow:

getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle(R.string.about_event_location);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);


回答2:

You need to add this to your actionBar theme. You can replace arrow image with your own image which can be transparent

<item name="android:homeAsUpIndicator">@drawable/action_arrow</item>


回答3:

getActionBar().setHomeAsUpIndicator(R.drawable.action_arrow);

Where action_arrow is a 25x10px transparent png. Same code for sherlock would be:

getSupportActionBar().setHomeAsUpIndicator(R.drawable.action_arrow);


回答4:

@vivek: works great. I do not recommend to use @android:color/transparent as Tim Cooper said, because the Title is aligned to the left. So a empty image is better



回答5:

In AndroidManifest.xml

remove the below code, which will remove back button from your ActionBar

android:parentActivityName=".Main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".Main.MainActivity" />

Just keep it like below:

<activity
android:name=".YourActivity"
android:label="@string/your_activity_label">
</activity>