Bar*_*ine 8 android android-appcompat android-actionbar
我刚刚修改了我们的代码以使用v7-appcompat库中提供的新SupportActionBar但是当在Jellybean手机上运行代码时(可能是Honeycomb和Ice Cream Sandwich存在相同的问题),主页按钮似乎永远不会被激活.
调用getSupportActionBar().setHomeButtonEnabled(true); 似乎没有做它说的但适用于姜饼手机.
如果我用getActionBar()替换它.setHomeButtonEnabled(true)它确实有效.
我用于v11 +的主题如下:
<style name="MyTheme" parent="@style/Theme.AppCompat">
    <item name="android:windowActionBar">true</item>
    <item name="android:windowNoTitle">false</item>
    <item name="android:listViewStyle">@style/MyListView</item>
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
    <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
    <item name="android:buttonStyle">@style/MyButton</item>
    <item name="android:radioButtonStyle">@style/MyRadioButtonStyle</item>
    <item name="android:windowContentOverlay">@drawable/ab_solid_dove_grey</item>
    <item name="android:windowTitleSize">@dimen/action_bar_height</item>
    <item name="android:selectableItemBackground">@drawable/sel_standard_item</item>
    <item name="android:windowBackground">@drawable/default_bg</item>
    <item name="android:actionMenuTextAppearance">@style/MyActionBarText</item>
    <item name="android:actionMenuTextColor">@color/gallery</item>
    <item name="android:tabWidgetStyle">@style/MyTabWidget</item>
</style>
并定义了动作栏样式v11 +:
<style name="MyActionBarStyle" parent="android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">useLogo|showHome|showCustom</item>
    <item name="displayOptions">useLogo|showHome|showCustom</item>
    <item name="android:actionBarSize">@dimen/action_bar_height</item>
    <item name="android:icon">@drawable/ic_launcher</item>
    <item name="android:background">@android:color/transparent</item> <!-- Remove blue line from bottom of action bar -->
</style>
任何人都知道为什么在正确支持操作栏的Android版本上没有启用主页按钮.
=== UPDATE ===我刚刚查看了appcompat库的源代码,我注意到ActionBarImplBase中的以下内容对我来说是错误的:
 setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp);
这意味着只有在Android版本低于ICS或者我启用了向上指示器时才会启用主页按钮? - 我不想要的.
Kc *_*son 14
您是否尝试过使用这三种方法(也尝试交换getSupportActionbar())?
 getActionBar().setDisplayShowHomeEnabled(true);
 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true); 
您是否尝试过手动处理按钮?
@Override
public boolean onOptionsItemSelected(int featureId, MenuItem item) {
     int itemId = item.getItemId();
     if(itemId == android.R.id.home){
         // Do stuff
     }
     return true;
}
Jas*_*ulo 13
这个对我有用:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_your_activity);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // ... other stuff
}
@Override
public boolean onSupportNavigateUp(){
    finish();
    // or call onBackPressed()
    return true;
}
onSupportNavigateUp()使用后退按钮时调用该方法SupportActionBar.
| 归档时间: | 
 | 
| 查看次数: | 25631 次 | 
| 最近记录: |