3

Android 2.2+ と互換性が必要なアプリケーションを開発しています。これは、ActionBarSherlock を使用して、ICS 以前のデバイスで ActionBar をカスタマイズしています。

2.2 および 2.3 デバイスでのみ、コンテンツがデバイスの画面に収まる場合でも、ActionBar のコンテンツがオーバーフローするという問題に直面しています。このようなもの:

ここに画像の説明を入力

Android 4.0 を実行しているデバイスの画面サイズ (320x480 の mdpi) を (エミュレーターで) 既にテストしましたが、問題なく動作するので、問題は ActionBarSherlock に関連していると思います。

また、アイコン ファイルを大幅に削減しようとしましたが、画像が小さくなったにもかかわらず、コンテンツはまだあふれていました。

ここに私のstyles.xmlファイルがあります:

<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
</style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="actionBarStyle">@style/AppBaseTheme.ActionBarStyle</item>
    <item name="actionBarTabStyle">@style/AppBaseTheme.ActionBarTabStyle</item>
    <item name="actionBarTabBarStyle">@style/AppBaseTheme.ActionBarTabBarStyle</item>
</style>

<style name="AppBaseTheme.ActionBarStyle" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="background">@drawable/action_bar_background</item>
    <item name="android:background">@drawable/action_bar_background</item>
</style>

<style name="AppBaseTheme.ActionBarTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabView.Inverse">
    <item name="background">@android:color/transparent</item>
    <item name="android:background">@android:color/transparent</item>

    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>
</style>

<style name="AppBaseTheme.ActionBarTabBarStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar.Inverse">
    <item name="background">@drawable/action_bar_tab_divider</item>
    <item name="android:background">@drawable/action_bar_tab_divider</item>

    <item name="divider">@drawable/sp</item>
    <item name="android:divider">@drawable/sp</item>
</style>

ファイル @drawable/action_bar_background は幅 320px で、@drawable/action_bar_tab_divider と @drawable/sp は両方とも幅 1px です。

そして、これが私のメインアクティビティでタブを作成するためのコードです:

ActionBar actionBar = super.getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

this.createTab(actionBar, R.drawable.action_bar_tab_home_off);
this.createTab(actionBar, R.drawable.action_bar_tab_news_off);
this.createTab(actionBar, R.drawable.action_bar_tab_videos_off);
this.createTab(actionBar, R.drawable.action_bar_tab_guide_off);


private void createTab(ActionBar actionBar, int resource) {
    Tab t = actionBar.newTab();

    t.setTabListener(this);
    t.setIcon(resource);

    actionBar.addTab(t);
}

何か案は?

4

1 に答える 1

2

問題の 1 つは、Action View の「Tab Bar」が自動的に画像を所定のサイズにスケーリングすることです。そのため、アイコンを非常に大きくしたり、非常に小さくしたりしても、アクション バーのほぼ同じスペースを埋める必要があります。

TabBar/TabView もオーバーフローするように設計されていますが、これについては既に確認済みです ^.^ これは、一度に 10 から 20 の異なるタブを開くアプリ用であり、ユーザーはそれらのリストをスクロールできます。それだけでなく、Android デバイスにはさまざまな形やサイズがあるため、固定された非スクロールのアイコン リストを使用するためにタブ ビューを操作するのは困難です。

あなたが探しているものに合うかもしれない2つのオプション。独自のアイコンを作成するRelativeLayoutLinearLayout、レイアウト内のアイコンを使用して作成します。このようにして、毎回アクションバーのサイズを選択することができます =) 任意の の上または下にバードックを配置できActivityます。

ActionBarこれがオプションでない場合は、スクロールしないトップ メニュー自体にアイコンを追加できる場合があります。ただし、アイコンがすべてメインに収まらない場合ActionBarがあり、オーバーフローしたアイコンがオーバーフロー メニューのドロップダウンに配置される可能性があります。=(

タブ間の仕切りの間隔を削除するには、次のコードを新しい xml ファイルとして、dividerdrawable.xml などの描画可能なフォルダーに保存します。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line" >
    <size
        android:width="0px"
        android:color="@android:color/black"
        android:dashWidth="0px"
        android:dashGap="0px" />
</shape>

次に、そのドローアブルをタブ区切りに使用します。

<item name="divider">@drawable/dividerdrawable</item>
于 2013-08-12T23:40:33.653 に答える