Android Fragments针对不同的屏幕尺寸进行了优化

时间:2014-11-20 06:09:52

标签: android android-fragments

我正在尝试针对不同的屏幕尺寸优化我在应用中的视图。我的代码是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.xxx.xxx.MainActivity$PlaceholderFragment">

<TextView
    android:id="@+id/section_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/section_label"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/section_label"
    android:orientation="vertical">

    <TextView
        android:id="@+id/title1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="wrap_content"
    android:layout_height="210dp"
    android:layout_alignLeft="@+id/linearLayout1"
    android:layout_alignRight="@+id/linearLayout1"
    android:layout_below="@+id/linearLayout1"
    android:orientation="vertical">

    <com.parse.ParseImageView
        android:id="@+id/imageview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/linearLayout2"
    android:layout_alignRight="@+id/linearLayout2"
    android:layout_below="@+id/linearLayout2"
    android:orientation="vertical">

    <TextView
        android:id="@+id/title2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/linearLayout3"
    android:layout_alignRight="@+id/linearLayout3"
    android:layout_below="@+id/linearLayout3"
    android:orientation="vertical">

    <ScrollView
        android:id="@+id/textAreaScroller"
        android:layout_width="fill_parent"
        android:layout_height="105dp"
        android:layout_x="0px"
        android:layout_y="25px"
        android:scrollbars="vertical">

        <TextView
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/fbedittext"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/fbedittext"
            android:layout_marginTop="22dp"
            android:lines="7" />
    </ScrollView>
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/linearLayout4"
    android:layout_alignRight="@+id/linearLayout4"
    android:layout_below="@+id/linearLayout4">

    <Button
        android:id="@+id/OK_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK" />

</LinearLayout>

我已经在HTC Glacier和摩托罗拉Moto X上测试了代码,如果我看到一个看起来很好的视图,那么另一个看起来很糟糕。我试图按照这里的指示:http://developer.android.com/guide/practices/screens_support.html我创建了小型,普通和大型布局,而冰川和摩托罗拉也采用了正确的屏幕尺寸。我希望Glacier能够采用正常的屏幕尺寸(它确实如此),但摩托罗拉也采用了正常的屏幕尺寸(我没想到)。有没有人知道如何在所有屏幕尺寸上使这看起来像样?理想情况下,我希望只拥有一个XML文件,并让图像视图和描述对象动态缩小和扩展以填充可用空间,并使标题和按钮保留在当前位置。

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您需要在res - &gt;值中使用维度文件夹。 试试

values
values-hdpi
values-xhdpi
values-large-hdpi

and also 
drawable/
drawable-large/
drawable-xlarge/

drawable-hdpi/
drawable-large-hdpi/
drawable-xlarge-hdpi/

drawable-xhdpi/
drawable-large-xhdpi/
drawable-xlarge-xhdpi/

with 

<supports-screens android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true"
          android:xlargeScreens="true"
          android:anyDensity="true" />

尝试使用ur项目中的上述文件夹。

答案 1 :(得分:0)

我让你的布局非常扁平,删除了层次结构。如果使用平面布局会更好。这个应该看起来像任何屏幕尺寸,没有不同的屏幕尺寸的不同布局。

使用默认值更改了您的imageView以检查布局,您可以将其更改为您自己的。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.xxx.xxx.MainActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/section_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="label" />

    <TextView
        android:id="@+id/title1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="match_parent"
        android:layout_height="210dp"
        android:layout_below="@+id/title1"
        android:src="@drawable/abc_ab_bottom_transparent_dark_holo" />

    <TextView
        android:id="@+id/title2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imageview"
        android:layout_centerHorizontal="true"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ScrollView
        android:id="@+id/textAreaScroller"
        android:layout_width="fill_parent"
        android:layout_height="105dp"
        android:layout_below="@id/title2"
        android:layout_x="0px"
        android:layout_y="25px"
        android:scrollbars="vertical" >

        <TextView
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/fbedittext"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/fbedittext"
            android:layout_marginTop="22dp"
            android:lines="7" />
    </ScrollView>

    <Button
        android:id="@+id/OK_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textAreaScroller"
        android:text="OK" />

</RelativeLayout>