2013-03-22 53 views
2

我在這裏解釋整個應用程序,我從ActionBar風格生成器創建了ActionBar,並將該風格添加到我的應用程序中。我正在使用SherLockLibrary來支持所有的Android版本。我從android:theme =「@ style/Theme.Customtheme」之類的清單文件中應用了樣式。但是在3.0以上版本和3.038版本版本中,UI的外觀和感覺會有所不同,您可以在圖2和圖3中看到。我想要相同的外觀和感覺的所有版本的 機器人。我在清單中寫下了自己的風格,但沒有表現出相同的外觀和感覺。在我的應用程序中,有四個類首先擴展了SherlockFragmentActivity,另外兩個擴展了SherlockListFragment。Android:將所有版本的Android應用於相同的外觀和感覺?

有人有另一種選擇做上面的東西,請給我提供很好的解決方案,以解決Android版本的兼容性和外觀和感覺問題。
我收集了很多東西,而且我在2個問題上問了一次stackoverflow,但沒有得到正確答案。它可能發生我無法問完美的問題,所以我希望有人給我完美的答案。 在此先感謝

在這裏我附上外觀和感覺。 圖1原有的風格,我想,在4.2版本 圖2圖,圖3 視圖2.3.3版本

enter image description here

以下是清單文件

<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); 
    } 
} 

回答