V7-appcompatライブラリで提供される新しいSupportActionBarを使用するようにコードを変更しましたが、Jellybean電話でコードを実行すると(おそらくHoneycombとIce creamサンドイッチにも同じ問題が存在します)、ホームボタンが表示されないようです。有効化されます。
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バージョンで、ホームボタンが有効にならない理由は誰でも知っています。
===更新=== appcompatライブラリのソースコードを見たところ、ActionBarImplBaseで次のように見えますが間違っていることに気づきました。
setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp);
これは、ホームボタンが有効になるのは、AndroidバージョンがICS未満の場合、またはアップインジケーターを有効にした場合のみですか?-私はしませんしたくない。
これら3つすべてを使用してみましたか(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;
}
これは私のために働いた:
_@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;
}
_
SupportActionBar
の戻るボタンを使用すると、メソッドonSupportNavigateUp()
が呼び出されます。
今これを試してみてください。原因シャーロックにあったのに、こういう自分の問題は解決できた。上記のスタイルから、テーマをカスタマイズしたことがわかります。私の場合、Sherlockテーマをカスタマイズしましたが、これがAndroid 4.0以降で問題が発生した原因でした。テーマが失敗しました。そこで、Android 4.0以降で実行されているときにデフォルトのSherlockテーマを使用するようにAndroidに指示するコードを追加しました。だから私はこれがあなたのために働くと思います。 Androidに、機能していないバージョンのAndroidでv7-appcompatライブラリのデフォルトテーマを使用するように指示します。
コードは以下のとおりです。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
this.setTheme(R.style.Theme_Sherlock);
} else {
this.setTheme(R.style.Theme_Sherlock_Light_DarkActionBar);
}
あなたの場合、テーマをv7-appcompatライブラリに編集します。
それがあなたのために働くならば、答えとしてマークしてください。これを使っていれば、場所のコードからテーマをカスタマイズできるかもしれないと思います。
Android Gingerbread cos Androidアクションバーなどのデバイスは3.0以降でのみサポートされているため、Sherlockロックライブラリは下位互換性を提供します。
http://actionbarsherlock.com/ ---ここからライブラリをダウンロードします。
次に、この行をコードに追加します。
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setIcon(Android.R.color.transparent);
actionBar.setDisplayUseLogoEnabled(false);
これは、アクションバーにバックホームキーを追加するのに役立ちます。また、アイコンを表示したくない場合は、アイコンが非表示になります。ただし、すべてのアクティビティでアプリアイコンを表示したい場合は、以下のこの行にコメントしてください。
actionBar.setIcon(Android.R.color.transparent);
APIレベル7以上で実行している場合は、アクティビティの ActionBarActivity クラスを拡張し、アクティビティテーマをTheme.AppCompatまたは同様のテーマに設定することで、アクションバーをアクティビティに追加できます。