2015-08-06 3 views
-1

Я пытаюсь добавить кнопку (homeup) в панели действий. Я добавил параметр родительской активности в манифест, и работает, если я не использую настраиваемый макет. Мой пользовательский код макета следующий.Нет кнопки HomeUp в панели действий с настраиваемым макетом

actionbar = getSupportActionBar(); 
View view = getLayoutInflater().inflate(R.layout.top_header_layout, null); 
ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.FILL_PARENT,ActionBar.LayoutParams.FILL_PARENT); 
actionbar.setCustomView(view, params); 
actionbar.setDisplayHomeAsUpEnabled(true); 
actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

раскладка

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/transparent"> 

    <ImageView 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:src="@drawable/top_bar_logo" 
     /> 

</FrameLayout> 

Manifest

<activity 
    android:name=".MoreDetailsActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:parentActivityName=".AccountInfoActivity" 
    android:label="@string/more_details"> 

    <meta-data android:name="android.support.PARENT_ACTIVITY" 
     android:value=".AccountInfoActivity"/> 
</activity> 
+0

Что делать после добавления кнопки «домой»? Вы пытаетесь перейти к предыдущей деятельности или к MainActivity? –

+0

Я хочу перейти к определенному действию. Извините, я должен добавить код манифеста. – shantanu

+0

Может быть, 'FILL_PARENT' испортили его? Вы видите значок своего приложения слева? Вместо этого вы используете 'WRAP_CONTENT'? –

ответ

1

Попробуйте заменить

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

с

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 

Также используйте этот actionBar.setIcon(your_drawable);, чтобы отобразить значок обратно.

+0

Благодарим за сообщение. Он работает, но опция должна быть ActionBar.DISPLAY_HOME_AS_UP. Вы можете отредактировать свой ответ? Я проверю его как принятый ответ. – shantanu

+0

, чтобы отображать обратную иконку, вы должны использовать actionBar.setIcon (your_drawable); –

0

ли что-то вроде этого

Внутри onCreate деятельности.

actionbar = getSupportActionBar(); 
View view = getLayoutInflater().inflate(R.layout.top_header_layout, null); 
ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.FILL_PARENT,ActionBar.LayoutParams.FILL_PARENT); 
actionbar.setCustomView(view, params); 
actionbar.setDisplayHomeAsUpEnabled(true); 
actionbar.setHomeButtonEnabled(true); 
actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

Теперь в вашем onOptionsItemSelected

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == android.R.id.home) { 
     //Your code here. In your case use Intent 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

И если вы хотите аппаратные кнопки назад слушателю использовать что-то вроде этого.

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    //Your intent here 
} 
+0

Благодарим вас за ответ. Но моя кнопка homeup не видна. У меня нет проблем, чтобы поймать событие click. – shantanu

+0

actionbar.setHomeButtonEnabled (true); Я добавил эту строку в ваш код. Вы заметили? –

+0

Извините, я пропустил это. Но, к сожалению, это не сработает. – shantanu

Смежные вопросы