【问题标题】:Prevent Repeating Code in android Layout防止在android布局中重复代码
【发布时间】:2017-07-11 13:28:16
【问题描述】:

有没有办法防止在 android 布局 xml 中重复代码? 例如,我的布局有一个 TabLayout 我想在其中显示 Tablayout 从右到左方向,所以我使用 android:layoutDirection="rtl" 但正如您所知,API 17 不支持此功能,因此我必须覆盖我的 API 17 代码。但每次我想修改布局时,我都必须在两个 xml 文件中重复相同的操作,有什么简单和更好的方法吗?

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>

以及在 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>

【问题讨论】:

    标签: android android-layout android-xml


    【解决方案1】:

    您可以将布局导出到它们自己的文件中,并在 &lt;include/&gt; 布局中将它们导出到 Activity/Fragment 布局中,例如

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

    查看开发者指南Re-using Layouts with include

    【讨论】:

    • 感谢您的回答。我尝试过这种方式,但我认为这是压倒性的,因为我们在资源中面临大量布局文件
    • @MahdiYusefi 重用布局的更多理由。
    • 我不确定。如果没有更好的方法,这将是设计 android 布局的一个严重缺陷。无论如何,感谢您的回答和关注。
    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多