アクティビティから表示されるように構成したときに表示されるActionBarの「上」アイコンのスタイルを設定する方法を探しています。
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
私は周りを見回して、ホームアイコンとタイトルの間にパディングを追加する方法を見つけました( ActionBarのホームアイコンとタイトルの間にパディング )が、ホームアイコンとタイトルの間にパディングを追加する方法はありません上インジケーターアイコン。
AndroidソースのActionBarView.HomeView
を掘り下げましたが、この呼び出しでアップインジケーターが膨らんでいるようです:
mUpView = findViewById(com.Android.internal.R.id.up);
問題は、com.Android.internal.R.id.up
が内部にあるためアクセスできないため、ホームアイコンをパディングするための上記のリンクされたソリューションが機能しないことです。理想的にはActionBarView.HomeView
をオーバーライドしたいのですが、それはActionBarView
内でプライベートです。
ActionBarSherlockがこの動作をオーバーライドする良い方法を提供するかどうか誰かが知っていますか?カスタムホームレイアウトの提供を検討しましたが、見つけたスレッドは、標準のAndroidクラスから逸脱するのは良い考えではないことを示していました。
何か案は?
このソリューションは機能します
ImageView view = (ImageView)findViewById(Android.R.id.home);
view.setPadding(10, 0, 0, 0);
ただし、このコードは、親アクティビティ、またはホームボタンにパディングを追加するすべてのアクティビティに配置する必要があります。
私はこのアプローチを提案します:
次のコードを使用して、描画可能なレイヤーリストを作成します。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item>
<bitmap
Android:antialias="true"
Android:gravity="center"
Android:src="@drawable/btn_back_actionbar_normal" />
</item>
<item>
<shape Android:shape="rectangle" >
<size Android:width="24dp" />
<solid Android:color="@Android:color/transparent" />
</shape>
</item>
</layer-list>
あなたのスタイルに追加します:
値-11の場合:
<item name="Android:homeAsUpIndicator">@drawable/actionbar_back_selector</item>
値の場合:
<item name="homeAsUpIndicator">@drawable/actionbar_back_selector</item>
このようにして、互換性のあるアクションバーの[戻る]ボタンと[ホーム]ボタンの間にパディングを追加します。このコードを追加する必要があるのは1回だけで、アプリ全体で利用できます。
実際 この答え は正しいです。ホームボタンの左パディングを設定するだけで、ホームボタンと上矢印の間にパディングが追加されます
ImageView view = (ImageView)findViewById(Android.R.id.home);
view.setPadding(10, 0, 0, 0);
グラフィックにパディングを追加し(たとえば、Photoshopで)、このグラフィックを属性を使用してテーマに設定すると、機能する可能性があります。
<item name="Android:homeAsUpIndicator">@drawable/up_with_padding</item>
私の携帯電話では、それは仕事です。解決策は以下のとおりです。
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item>
<bitmap
Android:src="@drawable/frame_menu"
Android:antialias="true"
Android:gravity="center"
/>
</item>
<item >
<shape Android:shape="rectangle">
<size Android:width="24dp"/>
<solid Android:color="@Android:color/transparent"></solid>
<padding
Android:right="10dp"
/>
</shape>
</item>
最も重要な文は「Android:right = 10dp」です
ActionBarSherlockを使用して古い電話をサポートしながらロゴImageViewを取得する方法を@ blacksh33pの回答に追加します。
ImageView view = (ImageView)findViewById(Android.R.id.home);
if (view == null)
view = (ImageView)findViewById(R.id.abs__home); // not sure that the name is exactly this - I tested it while developing an app on monodroid
ドローアブルレイアウトコール「actionbar_back_selector」を追加し、このコードを配置するだけです
そして、Javaファイル(対応するJavaファイル)に対応するホームアップボタンが必要なレイアウト)にこのコードを配置しますActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true ); actionBar.setHomeButtonEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.actionbar_back_selector);
次のように、テーマで「HomeAsUpIndicator」のスタイルを定義できます。
<item name="toolbarNavigationButtonStyle">@style/MyToolbarNavigationButtonStyle</item>
ここで、toobarNavigationButtonStyle
は、そのインジケーターのすべてのスタイルを定義するために使用されます。その幅とpaddingEndを変更して、インジケーターとタイトルテキストの間のギャップを拡大できます。