在单一布局中支持android中的多个屏幕

时间:2014-03-06 10:00:39

标签: java android android-layout android-ui

我已按照以下链接进行操作,以便我的应用程序可以支持不同的屏幕尺寸:

Supporting multiple screens in android

该解决方案完美无缺。但我担心的是,当我有一个拥有8-9个屏幕的android应用程序时,那意味着我将拥有8-9个不同的.xml布局文件。现在通过文件夹分叉来支持所有屏幕,这意味着我已经管理了几乎五十多个xml文件的布局,并且为了简单地更改UI,我必须转到所有文件夹并在xml文件中实现该更改。那么有没有更好的方法,我的意思是这样的布局,可以只调整控件本身或类似的东西?

3 个答案:

答案 0 :(得分:3)

我认为这不是太复杂。在布局文件夹中创建所有布局。使用styles.xml, dimens.xml and strings.xml保存字体大小和字符串。当您的布局最终确定,即不需要进行任何更改时,请从布局文件夹中复制所有这些布局并粘贴到layout-small, layout-large, layout-xlarge中。因此,当您需要更改字符串,样式和字体大小时,您必须仅在值文件夹中进行更改。

例如 -

而不是android:text="Hello"使用android:text="string/hello"并在strings.xml中保存hello的值。类似地,文字大小为android:textSize="@dimen/btxt"

这是最佳选择之一。

答案 1 :(得分:1)

我创建了一个相对大小的单位。 可以使用此大小单位为所有屏幕构建一个布局xml文件。 通过链接sdp sdk可以获得此大小单位。 以下是使用此sdk构建的布局XML的示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:gravity="center">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/give_us_a_review_landmine_main_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingBottom="@dimen/_27sdp"
        android:paddingLeft="@dimen/_43sdp"
        android:paddingRight="@dimen/_43sdp"
        android:paddingTop="@dimen/_50sdp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Intuit"
            android:textColor="@android:color/black"
            android:textSize="@dimen/_40sdp"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/_minus10sdp"
            android:paddingBottom="@dimen/_15sdp"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:includeFontPadding="false"
                android:text="♡"
                android:textColor="#ED6C27"
                android:textSize="@dimen/_70sdp"
                android:textStyle="bold" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:includeFontPadding="false"
                android:text="U"
                android:textColor="@android:color/black"
                android:textSize="@dimen/_70sdp" />
        </LinearLayout>

        <TextView
            android:id="@+id/give_us_a_review_landmine_text_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingBottom="@dimen/_12sdp"
            android:text="Rate us so we can grow and help more people get their finances in check"
            android:textColor="@android:color/black"
            android:textSize="@dimen/_16sdp" />

        <TextView
            android:id="@+id/give_us_a_review_landmine_text_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="★★★★★"
            android:textColor="#747474"
            android:textSize="@dimen/_22sdp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/give_us_a_review_landmine_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/_25sdp"
            android:padding="@dimen/_8sdp"
            android:text="Rate"
            android:textSize="@dimen/_15sdp"
            android:visibility="visible"
            android:textColor="@android:color/white"
            android:gravity="center"
            android:minWidth="120dp"
            android:includeFontPadding="false"
            android:background="#0ac775"
            android:singleLine="true" />

    </LinearLayout>
</LinearLayout>

结果如下:

enter image description here

请注意,UI元素会随着屏幕尺寸而缩放。

答案 2 :(得分:0)

看看这个问题:LINK

然后,您可以创建一个包含所有XML布局中常见内容的XML文件,然后为每个布局添加或合并所需的公共XML部分,这样您只需编辑一次公共XML文件,然后编辑所有其他XML文件然后,布局将包含新的更改。