2010-09-16 185 views
6

我正在開發帶有選項卡式佈局的Android應用程序。我已經知道它沒有產生像Google's tutorial suggested這樣的新活動,但是我只是在點擊每個標籤時努力讓我的內容顯示。目前它只顯示黑色,無論選項卡處於活動狀態。Android選項卡式佈局setContent

以下是我在其最新的迭代代碼:

Main.java

public class Main extends TabActivity { 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Resources res = getResources(); 
     TabHost tabHost = getTabHost(); 
     TabHost.TabSpec spec; 

     // add orders tab 
     spec = tabHost.newTabSpec("orders").setIndicator("Orders", 
          res.getDrawable(R.drawable.flash_36)) 
          .setContent(R.id.ordersLayout); 
     tabHost.addTab(spec); 

     // add positions tab 
     spec = tabHost.newTabSpec("positions").setIndicator("Positions", 
          res.getDrawable(R.drawable.small_tiles_36)) 
          .setContent(R.id.positionsLayout); 
     tabHost.addTab(spec); 

     // add strategies tab 
     spec = tabHost.newTabSpec("strategies").setIndicator("Strategies", 
          res.getDrawable(R.drawable.cards_36)) 
          .setContent(R.id.strategiesLayout); 
     tabHost.addTab(spec); 

     // add account tab 
     spec = tabHost.newTabSpec("account").setIndicator("Account", 
          res.getDrawable(R.drawable.seal_36)) 
          .setContent(R.id.accountLayout); 
     tabHost.addTab(spec); 

     tabHost.setCurrentTab(1); 
    } 

} 

main.xml中

<?xml version="1.0" encoding="utf-8"?> 


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

      <LinearLayout android:id="@+id/mainLayout" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:padding="5dp"> 

       <TabWidget android:id="@android:id/tabs" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content"> 
       </TabWidget> 

       <FrameLayout android:id="@android:id/tabcontent" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:background="#fff" 
          android:padding="5dp"> 

          <include layout="@layout/orders"/> 
          <include layout="@layout/positions"/> 
          <include layout="@layout/strategies"/> 
          <include layout="@layout/account"/> 

       </FrameLayout> 

      </LinearLayout> 

</TabHost> 

Account.xml在

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    android:id="@+id/accountLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#fff" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <TextView 
     android:text="Account Information" 
     android:id="@+id/accountLabel" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

    </TextView> 

</LinearLayout> 

orders.xml中

我只包括這兩種,它們都是完全相同的同爲LinearLayout中的android適當的標識:id參數。

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    android:id="@+id/ordersLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#fff" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <TextView 
     android:text="Working Orders" 
     android:id="@+id/ordersLabel" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

    </TextView> 

</LinearLayout> 

而這裏的選項卡之間切換時,我得到什麼的截圖:

訂單標籤

alt text

位置標籤

alt text

對於模擬器和我剛剛買到的三星Galaxy都是如此,我非常推崇順便提一下,有什麼想法?

回答

5

我想通了,這是一個簡單的參數除了main.xml中的文件:

的main.xml(修訂)

<?xml version="1.0" encoding="utf-8"?> 


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

      <LinearLayout android:id="@+id/mainLayout" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:orientation="vertical" 
          android:padding="5dp"> 

       <TabWidget android:id="@android:id/tabs" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content"> 
       </TabWidget> 

       <FrameLayout android:id="@android:id/tabcontent" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:background="#fff" 
          android:padding="5dp"> 

          <include layout="@layout/orders"/> 
          <include layout="@layout/positions"/> 
          <include layout="@layout/strategies"/> 
          <include layout="@layout/account"/> 

       </FrameLayout> 

      </LinearLayout> 

</TabHost> 

通知的的LinearLayout,現在包括參數android:方向。之前它所做的是將其他屏幕向右推。現在它的工作原理應該如此。

注意:在明天的辦公室,我可以測試這是否仍然允許我旋轉手機並使其在橫向方向上正確顯示。如果沒有,那麼我可能必須爲水平創建一個單獨的xml文件,除非有人對此有深刻的瞭解。

+0

+1爲答案和一個非常好的解釋。 – Subby 2014-02-24 12:05:57