web-dev-qa-db-ja.com

アクションバーの「上」インジケーター画像のパディング

アクティビティから表示されるように構成したときに表示される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クラスから逸脱するのは良い考えではないことを示していました。

何か案は?

16
dgknipp

このソリューションは機能します

ImageView view = (ImageView)findViewById(Android.R.id.home);
view.setPadding(10, 0, 0, 0);

ただし、このコードは、親アクティビティ、またはホームボタンにパディングを追加するすべてのアクティビティに配置する必要があります。

私はこのアプローチを提案します:

  1. 次のコードを使用して、描画可能なレイヤーリストを作成します。

    <?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>
    
  2. あなたのスタイルに追加します:

値-11の場合:

<item name="Android:homeAsUpIndicator">@drawable/actionbar_back_selector</item>

値の場合:

<item name="homeAsUpIndicator">@drawable/actionbar_back_selector</item>

このようにして、互換性のあるアクションバーの[戻る]ボタンと[ホーム]ボタンの間にパディングを追加します。このコードを追加する必要があるのは1回だけで、アプリ全体で利用できます。

22
David_E

実際 この答え は正しいです。ホームボタンの左パディングを設定するだけで、ホームボタンと上矢印の間にパディングが追加されます

    ImageView view = (ImageView)findViewById(Android.R.id.home);
    view.setPadding(10, 0, 0, 0);
7
starkej2

グラフィックにパディングを追加し(たとえば、Photoshopで)、このグラフィックを属性を使用してテーマに設定すると、機能する可能性があります。

<item name="Android:homeAsUpIndicator">@drawable/up_with_padding</item>
2
miguel.rodelas

私の携帯電話では、それは仕事です。解決策は以下のとおりです。

<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」です

1
tain198127

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
0
Display Name

ドローアブルレイアウトコール「actionbar_back_selector」を追加し、このコードを配置するだけです

そして、Javaファイル(対応するJavaファイル)に対応するホームアップボタンが必要なレイアウト)にこのコードを配置しますActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true ); actionBar.setHomeButtonEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.actionbar_back_selector);

0
Gopal Samy

次のように、テーマで「HomeAsUpIndicator」のスタイルを定義できます。

<item name="toolbarNavigationButtonStyle">@style/MyToolbarNavigationButtonStyle</item>

ここで、toobarNavigationButtonStyleは、そのインジケーターのすべてのスタイルを定義するために使用されます。その幅とpaddingEndを変更して、インジケーターとタイトルテキストの間のギャップを拡大できます。

0
landerlyoung