2017-07-11 4 views
0

Gibt es sowieso zu verhindern, Code in Android-Layout-XML zu wiederholen? zum Beispiel habe ich Layout, das ein TabLayout hat Ich möchte in in Rechtsrichtung von links zeigen, so dass ich android: layoutDirection = "rtl" Aber wie Sie wissen, wird dies nicht unter API 17 unterstützt, so dass ich meine überschreiben muss Code für API 17. Aber jedes Mal, wenn ich mein Layout ändern möchte, muss ich dieselben Aktionen in beiden XML-Dateien wiederholen. Gibt es einen einfachen und besseren Weg?Verhindern, Code in android-Layout zu wiederholen

Layout für die API 17:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/main_background_color"> 


<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/promotion_type_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="scrollable" 
     app:tabGravity="center" 
     app:tabTextAppearance="@style/AppTabTextAppearance" 
     app:tabIndicatorColor="@color/cardview_light_background" 
     app:tabTextColor="#FFF" 
     android:layoutDirection="rtl" 


     /> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/promotion_view_pager" 
    android:background="@color/main_background_color" /> 

    </android.support.design.widget.CoordinatorLayout> 

und Layout für die Unter-API 17:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/main_background_color"> 


    <android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/promotion_type_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="scrollable" 
     app:tabGravity="center" 
     app:tabTextAppearance="@style/AppTabTextAppearance" 
     app:tabIndicatorColor="@color/cardview_light_background" 
     app:tabTextColor="#FFF" 


     /> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/promotion_view_pager" 
    android:background="@color/main_background_color" /> 

</android.support.design.widget.CoordinatorLayout> 

Antwort

0

Sie können die Layouts in einer eigenen Datei und <include/> sie im Activity/Fragment Layout zum Beispiel exportieren

<include layout="@layout/base_table" /> 

Siehe Entwicklerleitfaden Re-using Layouts with include

+0

Vielen Dank für Ihre Antwort. Ich habe versucht, aber ich denke, das ist überwältigend , weil wir konfrontiert mit vielen Layout-Dateien in Ressource –

+1

@ MahdiYusefi Noch mehr Grund, Layouts wieder zu verwenden. –

+0

Ich bin mir nicht sicher. Wenn es keinen besseren Weg gibt, wäre das ein ernsthafter Fehler bei der Gestaltung des Android-Layouts. Wie auch immer, danke für Ihre Antwort und Aufmerksamkeit. –

Verwandte Themen