2

ここでは、アプリ全体について説明しています。ActionBarStyle GeneratorからActionBarを作成し、そのスタイルをアプリに追加しました。私はすべてのAndroidバージョンをサポートするためにSherLockLibraryを使用しています。android:theme = "@ style/Theme.Customtheme"のようなマニフェストファイルからスタイルを適用しました。しかし、UIのルックアンドフィールは、3.0を超えるバージョンと3.0未満のバージョンでは異なります。次の図2と図3を参照してください。すべてのバージョンのAndroidで同じルックアンドフィールが必要です。私はマニフェストで自分のスタイルを書いたが、同じルックアンドフィールを示していなかった。私のアプリには、SherlockFragmentActivityを拡張する4つのクラスの最初のアクティビティがあり、他の2つはSherlockListFragmentを拡張するfragmentです。

誰もが上記のことを行うための別のオプションがあり、Androidバージョンの互換性とルックアンドフィールの問題を解決するための良い解決策を私に提供してください。
私はたくさんゴーグルし、stackoverflowについて2回質問しましたが、適切な回答が得られませんでした。完璧な質問ができなかったかもしれないので、誰かが完璧な答えをくれたらいいのにと思います。前もって感謝します

ここにルックアンドフィールを付けています。私が欲しいfig.1オリジナルスタイル、4.2バージョンのfig.2ビュー、2.3.3バージョンのfig.3ビュー

ここに画像の説明を入力してください

以下はマニフェストファイルです

<activity
     android:name="com.example.customactivity.CustomActivity"
     android:label="@string/projects"
     android:theme="@style/Theme.Customtheme" >
            .
            .

スタックタブのレイアウトは次のとおりです

 <TabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
          />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0"
            />
       <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

    </LinearLayout>
</TabHost>

以下は主なアクティビティコードです

public class CustomActivity extends SherlockFragmentActivity {
TabHost tHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_custom);

        tHost = (TabHost) findViewById(android.R.id.tabhost);
        tHost.setup();

        TabHost.OnTabChangeListener tabChangeListener = new TabHost.OnTabChangeListener() {

            @Override
            public void onTabChanged(String tabId) {
                FragmentManager fm =   getSupportFragmentManager();
                ResidentialFragment resdentialFragment = (ResidentialFragment) fm.findFragmentByTag("residential");
                CommercialFragment commercialFragment = (CommercialFragment) fm.findFragmentByTag("commercial");
                FragmentTransaction ft = fm.beginTransaction();

                if (resdentialFragment!=null) {
                    ft.detach(resdentialFragment);
                }       
                /** Detaches the commercialfragment if exists */
                if (commercialFragment!=null) {
                    ft.detach(commercialFragment);
                }
                /** If current tab is residential */
                if(tabId.equalsIgnoreCase("residential")){

                    if(resdentialFragment==null){
                        /** Create residentialFragment and adding to fragmenttransaction */
                        ft.add(R.id.realtabcontent,new ResidentialFragment(), "residential");
                    }else{
                        /** Bring to the front, if already exists in the fragmenttransaction */
                        ft.attach(resdentialFragment);
                    }

                }else{    /** If current tab is apple */
                    if(commercialFragment==null){
                        /** Create AppleFragment and adding to fragmenttransaction */
                        ft.add(R.id.realtabcontent,new CommercialFragment(), "commercial");
                     }else{
                        /** Bring to the front, if already exists in the fragmenttransaction */
                        ft.attach(commercialFragment);
                    }
                }
                ft.commit();
            }
        };

        /** Setting tabchangelistener for the tab */
        tHost.setOnTabChangedListener(tabChangeListener);

        /** Defining tab builder for residential tab */
        TabHost.TabSpec tSpecResidential = tHost.newTabSpec("residential");
        tSpecResidential.setIndicator("Residential");
        tSpecResidential.setContent(new DummyTabContent(getBaseContext()));
        tHost.addTab(tSpecResidential);

        /** Defining tab builder for commercial tab */
        TabHost.TabSpec tSpecComm = tHost.newTabSpec("commercial");
        tSpecComm.setIndicator("Commercial");
        tSpecComm.setContent(new DummyTabContent(getBaseContext()));
        tHost.addTab(tSpecComm);
    }
}
4

1 に答える 1

-1

これを見たことがありますか?タブホストは廃止されました。アクション バーのタブを使用します。http://wptrafficanalyzer.in/blog/adding-navigation-tabs-containing-listview-to-action-bar-in-android/

もちろん、すべてのバージョンでサポートするには、上記を sherlock アクティビティとして置き換えます。

于 2013-03-22T06:19:10.840 に答える