Android TabWidget разные XML-файлы для разных вкладок

1

Я хочу реализовать tabwidget с несколькими вкладками, каждый из которых представляет данные из одного источника данных, которые могут изменяться динамически, поэтому я не могу использовать несколько действий, поскольку, насколько я понимаю, активность больше похожа на приложение, которое не существует в то время как он скрыт. Итак, яв создал табуид:          

        <ScrollView android:id ="@+id/settings_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
        </ScrollView>

        <ScrollView android:id="@+id/maps_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">            
        </ScrollView>

        <EditText android:id="@+id/statistics_view"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent" 
                  android:gravity="center"
                  android:singleLine="false" 
                  android:layout_marginLeft="10dip" 
                  android:layout_marginRight="10dip">
        </EditText>

        <RelativeLayout android:id="@+id/about_view"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
                                  <ImageView   
                                      android:id="@+id/icon"
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:tint="#55ff0000"
                                      android:src="@drawable/main"
                                      android:layout_centerInParent="true"/>      
                                  <TextView   
                                      android:id="@+id/appname"
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"          
                                      android:text="@string/app_name"
                                      android:layout_below="@id/icon"
                                      android:layout_centerInParent="true"/> 
                                  <TextView   
                                      android:id="@+id/version"
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"                    
                                      android:layout_below="@id/appname"
                                      android:layout_centerInParent="true"/>   
                                  <TextView   
                                      android:id="@+id/site"
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"          
                                      android:text="@string/app_site"
                                      android:layout_below="@id/version"
                                      android:layout_centerInParent="true"/>    
                                 <TextView   
                                      android:id="@+id/copyright"
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"          
                                      android:text="@string/app_copyright"
                                      android:layout_below="@id/site"
                                      android:layout_centerInParent="true"/>                                      
                            </RelativeLayout>

        <RelativeLayout android:id ="@+id/gatewaylist_view"
                           android:orientation="vertical"
                           android:layout_width="fill_parent"
                           android:layout_height="fill_parent"
                           android:padding="10dip"
                           >
                            <LinearLayout
                                android:id="@+id/bottom_view"
                                android:layout_width="fill_parent"
                                android:layout_height="wrap_content"
                                android:layout_alignParentBottom="true">
                                    <!--Put whatever view item you want here -->
                                  <Button android:text="Add Gateway"
                                          android:id="@+id/BtnToClick"
                                          android:layout_width="wrap_content"
                                          android:layout_height="wrap_content"
                                         >
                                  </Button>
                           </LinearLayout>
                           <ListView
                            android:id="@+id/android:list"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:cacheColorHint="#00000000"
                            android:layout_above="@id/bottom_view"
                            />
        </RelativeLayout>

        <ScrollView android:id="@+id/gatewayparams_view"
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent">
                                <RelativeLayout android:layout_width="match_parent"
                                             android:layout_height="match_parent">
                                        <LinearLayout android:id="@+id/addressLabels"
                                                      android:orientation="horizontal"
                                                      android:layout_width="fill_parent"
                                                      android:layout_height="fill_parent"
                                                      android:layout_weight="4">
                                          <TextView     android:id="@+id/lblIP"
                                                        android:layout_width="0dip"
                                                        android:layout_height="wrap_content"
                                                        android:text="@string/hostLabel"
                                                        android:layout_weight="3"/>
                                          <TextView     android:id="@+id/lblPort"
                                                        android:layout_width="0dip"
                                                        android:layout_height="wrap_content"
                                                        android:text="@string/portLabel"
                                                        android:layout_toRightOf="@id/lblIP"
                                                        android:layout_alignParentRight="true"
                                                        android:layout_weight="1"/>
                                       </LinearLayout>
                                       <LinearLayout  android:id="@+id/addressEditBoxes"
                                                      android:orientation="horizontal"
                                                      android:layout_width="fill_parent"
                                                      android:layout_height="fill_parent"
                                                      android:layout_weight="4"
                                                      android:layout_below="@id/addressLabels">
                                            <EditText android:id="@+id/edtHost"
                                                      android:layout_height="wrap_content"
                                                      android:layout_width="0dip"
                                                      android:layout_alignParentLeft="true"
                                                      android:inputType="text"
                                                      android:text="192.168.1.141"
                                                      android:layout_weight="3"/>
                                            <EditText android:id="@+id/edtPort"
                                                      android:layout_height="wrap_content"
                                                      android:layout_width="0dip"
                                                      android:inputType="number"
                                                      android:text="9988"
                                                      android:layout_alignParentRight="true"
                                                      android:layout_weight="1"
                                                      />             
                                        </LinearLayout>
                                        <CheckBox android:id="@+id/chkUseProxy"
                                                  android:layout_height="wrap_content"
                                                  android:layout_width="wrap_content"
                                                  android:layout_alignParentLeft="true"
                                                  android:text="@string/useProxyLabel"
                                                  android:layout_weight="1"
                                                  android:layout_below="@id/addressEditBoxes"/>
                                        <LinearLayout android:id="@+id/proxyLables"
                                                      android:orientation="horizontal"
                                                      android:layout_width="fill_parent"
                                                      android:layout_height="fill_parent"
                                                      android:layout_weight="4"
                                                      android:layout_below="@id/chkUseProxy">
                                          <TextView     android:id="@+id/lblProxyIP"
                                                        android:layout_width="0dip"
                                                        android:layout_height="wrap_content"
                                                        android:text="@string/hostLabel"
                                                        android:layout_weight="3"/>
                                          <TextView     android:id="@+id/lblProxyPort"
                                                        android:layout_width="0dip"
                                                        android:layout_height="wrap_content"
                                                        android:text="@string/portLabel"
                                                        android:layout_toRightOf="@id/lblProxyIP"
                                                        android:layout_alignParentRight="true"
                                                        android:layout_weight="1"/>
                                       </LinearLayout>
                                       <LinearLayout  android:id="@+id/proxyEditBoxes"
                                                      android:orientation="horizontal"
                                                      android:layout_width="fill_parent"
                                                      android:layout_height="fill_parent"
                                                      android:layout_weight="4"
                                                      android:layout_below="@id/proxyLables">
                                            <EditText   android:id="@+id/edtProxyHost"
                                                        android:layout_height="wrap_content"
                                                        android:layout_width="0dip"
                                                        android:layout_alignParentLeft="true"
                                                        android:inputType="text"
                                                        android:text="192.168.1.141"
                                                        android:layout_weight="3"/>
                                            <EditText   android:id="@+id/edtProxyPort"
                                                        android:layout_height="wrap_content"
                                                        android:layout_width="0dip"
                                                        android:inputType="number"
                                                        android:text="9988"
                                                        android:layout_alignParentRight="true"
                                                        android:layout_weight="1"
                                                      />             
                                        </LinearLayout>    
                                         <LinearLayout  android:id="@+id/encryptionLine"
                                                        android:orientation="horizontal"
                                                        android:layout_width="fill_parent"
                                                        android:layout_height="fill_parent"
                                                        android:layout_weight="4"
                                                        android:layout_below="@id/proxyEditBoxes">   
                                            <TextView     android:id="@+id/lblEncryption"
                                                          android:text="@@string/encryptiontype"
                                                          android:layout_width="0dip"
                                                          android:layout_height="wrap_content"                      
                                                          android:layout_weight ="2"/>     
                                            <Spinner      android:id="@+id/spinnerenctype"
                                                          android:layout_width="0dip"
                                                          android:layout_height="wrap_content"
                                                          android:drawSelectorOnTop="true"
                                                          android:prompt="@string/encryptiontype"
                                                          android:layout_weight ="2"
                                                      />
                                        </LinearLayout>    
                                        <LinearLayout android:id="@+id/usernameLabels"
                                                      android:orientation="horizontal"
                                                      android:layout_width="fill_parent"
                                                      android:layout_height="fill_parent"
                                                      android:layout_weight="4"
                                                      android:layout_below="@id/encryptionLine">
                                              <TextView android:id="@+id/txtUName"
                                                        android:text="@string/usernameLabel"
                                                        android:layout_width="0dip"
                                                        android:layout_height="wrap_content"                      
                                                        android:layout_weight ="2"/>
                                              <TextView android:id="@+id/txtPassword"
                                                        android:text="@string/passwordLabel"
                                                        android:layout_width="0dip"
                                                        android:layout_height="wrap_content"                          
                                                        android:layout_weight ="2"/>       
                                        </LinearLayout>
                                        <LinearLayout android:id="@+id/usernameEditBoxes"
                                                      android:orientation="horizontal"
                                                      android:layout_width="fill_parent"
                                                      android:layout_height="fill_parent"
                                                      android:layout_weight="4"
                                                      android:layout_below="@id/usernameLabels">
                                              <EditText android:id="@+id/edtUsername"
                                                        android:layout_height="wrap_content"
                                                        android:layout_width="0dip"
                                                        android:inputType="text"
                                                        android:text="devdev"
                                                        android:layout_weight="2"
                                                       />                
                                              <EditText android:id="@+id/edtPassword"
                                                        android:layout_height="wrap_content"
                                                        android:layout_width="0dip"
                                                        android:inputType="textPassword"
                                                        android:text="devdev"
                                                        android:layout_weight="2"
                                                        />
                                         </LinearLayout>
                                        <Button android:layout_height="wrap_content"
                                                android:text="@string/connect"
                                                android:id="@+id/btnConnect"
                                                android:layout_width="match_parent"
                                                android:layout_weight="1"
                                                android:layout_below="@id/usernameEditBoxes"/>
                                </RelativeLayout>
                            </ScrollView>

        <LinearLayout android:id="@+id/videofield_view"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent" >
        </LinearLayout>>
   </FrameLayout>
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" 
        android:layout_weight="0"/>

</LinearLayout>

и я инициализирую свое приложение следующим образом

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

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost


    tabHost.addTab(tabHost.newTabSpec("tab_gatewaylist").setIndicator("",res.getDrawable(R.drawable.ic_tab_favorites)).setContent(R.id.gatewaylist_view));
    tabHost.addTab(tabHost.newTabSpec("tab_gatewayparams").setIndicator("",res.getDrawable(R.drawable.ic_tab_gatewayparams)).setContent(R.id.gatewayparams_view));
    tabHost.addTab(tabHost.newTabSpec("tab_videofield").setIndicator("",res.getDrawable(R.drawable.ic_tab_videofield)).setContent(R.id.videofield_view));
    tabHost.addTab(tabHost.newTabSpec("tab_maps").setIndicator("",res.getDrawable(R.drawable.ic_tab_maps)).setContent(R.id.maps_view));
    tabHost.addTab(tabHost.newTabSpec("tab_statistics").setIndicator("",res.getDrawable(R.drawable.ic_tab_statistics)).setContent(R.id.statistics_view));
    tabHost.addTab(tabHost.newTabSpec("tab_settings").setIndicator("",res.getDrawable(R.drawable.ic_tab_settings)).setContent(R.id.settings_view));
    tabHost.addTab(tabHost.newTabSpec("tab_about").setIndicator("",res.getDrawable(R.drawable.ic_tab_about)).setContent(R.id.about_view));


    tabHost.setCurrentTab(0);

его работы в порядке, но мне интересно, могу ли я разделять определения разных вкладок на отдельные файлы xml. Ive пытался это сделать, но при сбоях приложения при попытке добавить соответствующую вкладку. Спасибо заранее.

Теги:
file
tabwidget

1 ответ

1

Вы пытались использовать элемент <include />? http://developer.android.com/resources/articles/layout-tricks-reuse.html таким образом вы можете поместить отдельные определения xml в разные файлы и включить их в основной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню