0

我正在开发 android 应用程序。我是 android 应用程序开发的新手。我可以为少数 android 设备测试该应用程序。但是不同设备的布局看起来不同。我创建了屏幕截图以供参考。这些屏幕截图显示了应用程序设计的完美布局

较大分辨率设备的布局存在一些设计问题

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bgcopy"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/linearLayout1"
    style="@style/TitleBar" >

    <Button
        android:id="@+id/back"
        android:layout_width="60dp"
        android:layout_height="30dip"
        android:layout_marginLeft="7dip"
        android:background="@drawable/bround1"
        android:text="@string/back"
        android:textColor="@color/White"
        android:textStyle="bold" />

    <TextView
        style="@style/TitleBarText"
        android:gravity="center"
        android:text="@string/testApp"
        android:textSize="16dp" />

    <Button
        android:id="@+id/home"
        android:layout_width="60dip"
        android:layout_height="30dip"
        android:layout_marginRight="7dip"
        android:background="@drawable/bround1"
        android:text="@string/home"
        android:textColor="@color/White"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="1.5dp"
    android:background="@color/Black" >
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignBottom="@+id/relativeLayout1"
    android:orientation="horizontal"
    android:background="@drawable/blackroundshape" 
    android:gravity="center">

    <TextView
        android:id="@+id/restrictions"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:background="@drawable/blackroundshape"
        android:gravity="center"
        android:layout_gravity="center"
        android:selectAllOnFocus="true"
        android:text="Details"
        android:textColor="@color/White"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/locations"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:background="@drawable/blackroundshape"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="@string/locations"
        android:textColor="@color/White"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/news"
        android:layout_width="128dip"
        android:layout_height="54dip"
        android:layout_marginLeft="0.5dip"
        android:layout_weight="1"
        android:background="@drawable/blackroundshape"
        android:gravity="center"
        android:layout_gravity="center"
        android:selectAllOnFocus="true"
        android:text="@string/news"
        android:textColor="@color/White"
        android:textSize="15dip"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="60dp"        
    android:layout_below="@+id/linearLayout1"
    android:orientation="horizontal"
    android:background="@drawable/backbutton"
    android:gravity="center"  
    >

    <TextView
        android:id="@+id/reserve"
        android:layout_width="115dip"
        android:layout_height="58dip"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:background="@drawable/backbutton"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="@string/reserve"
        android:textColor="@color/White"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/favorite"
        android:layout_width="115dip"
        android:layout_height="58dip"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:background="@drawable/backbutton"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="@string/favorite"
        android:textColor="@color/White"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/share"
        android:layout_width="128dip"
        android:layout_height="58dip"
        android:layout_weight="1"
        android:background="@drawable/backbutton"
        android:gravity="center"
        android:layout_gravity="center"
        android:selectAllOnFocus="true"
        android:text="@string/share"
        android:textColor="@color/White"
        android:textSize="15dip"
        android:textStyle="bold" />
</LinearLayout>

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="504dp"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true" >

    <RelativeLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="fill_parent"
        android:layout_height="170dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_margin="7dp"
        android:background="@drawable/round_transperent2" >

        <ImageView
            android:id="@+id/image"
            android:layout_width="110dp"
            android:layout_height="110dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="11dp"
            android:src="@drawable/default_ptr_rotate" />

        <TextView
            android:id="@+id/couponText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/image"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="20dp"
            android:layout_toRightOf="@+id/image"
            android:text="TextView"
            android:textColor="@color/Black"
            android:typeface="serif" />

        <TextView
            android:id="@+id/save_textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/image"
            android:layout_below="@+id/image"
            android:layout_marginLeft="1dp"
            android:paddingLeft="1dp"
            android:text="@string/save"
            android:textColor="@color/mightyBlue"
            android:textSize="19sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/upto_textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/save_textView2"
            android:layout_alignBottom="@+id/save_textView2"
            android:layout_alignRight="@+id/image"
            android:layout_marginLeft="3dp"
            android:layout_toRightOf="@+id/save_textView2"
            android:text="@string/upto"
            android:textColor="@color/Gray" />

        <TextView
            android:id="@+id/amountDetails"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/save_textView2"
            android:layout_below="@+id/save_textView2"
            android:layout_marginBottom="4dp"
            android:paddingLeft="1dp"
            android:text="@string/amount"
            android:textColor="@color/mightyBlue"
            android:textSize="18sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/amountDetails"
            android:layout_alignLeft="@+id/couponText"
            android:text="Expires on:"
            android:textColor="@color/Black"
            android:typeface="serif"
            android:visibility="invisible" />

        <TextView
            android:id="@+id/expitydate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/amountDetails"
            android:layout_toRightOf="@+id/textView5"
            android:maxLength="10"                
            android:textColor="@color/Black" 
            />
    </RelativeLayout>

    <TextView
        android:id="@+id/RemainingDays_textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView7"
        android:layout_below="@+id/relativeLayout2"
        android:text="Remaning Days"
        android:textColor="@color/mightyBlue" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/RemainingDays_textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:gravity="center"
        android:text="@string/redeem"
        android:textColor="@color/Black"
        android:textSize="16dp"/>

    <TextView
        android:id="@+id/textView7"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView6"
        android:layout_below="@+id/textView6"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="3dp"
        android:gravity="center"
        android:text="@string/redeemnow"
        android:textColor="@color/Red"
        android:textSize="18dp" />

    <TextView
        android:id="@+id/YES"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignLeft="@+id/textView7"
        android:layout_below="@+id/textView7"
        android:layout_marginLeft="35dp"
        android:layout_marginTop="20dp"
        android:background="@drawable/yellow_ball"
        android:gravity="center"
        android:text="YES"
        android:textColor="@color/Black"
        android:textSize="16dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/No"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_alignBaseline="@+id/YES"
        android:layout_alignBottom="@+id/YES"
        android:layout_alignRight="@+id/textView7"
        android:layout_marginRight="44dp"
        android:background="@drawable/yellow_ball"
        android:gravity="center"
        android:text="NO"
        android:textColor="@color/Black"
        android:textSize="16dp"
        android:textStyle="bold" />
</RelativeLayout>

第二个屏幕截图显示了问题。我已完成应用程序的功能方面,但由于此问题无法提交应用程序。任何帮助都会得到帮助。

谢谢你!!!

4

4 回答 4

1

包含的 LinearLayout 应该有重力 = center 以使 TextView 子级居中and android:layout_alignParentBottom="true"(我看到你有一个 RelativeLayout 作为父容器):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:id="@+id/navBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/restrictions"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:selectAllOnFocus="true"
        android:text="Details"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/locations"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Locations"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/news"
        android:layout_width="128dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginLeft="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:selectAllOnFocus="true"
        android:text="news"
        android:textSize="15dip"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/navBar"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/restrictions"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:selectAllOnFocus="true"
        android:text="Details"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/locations"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Locations"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/news"
        android:layout_width="128dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginLeft="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:selectAllOnFocus="true"
        android:text="news"
        android:textSize="15dip"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/restrictions"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:selectAllOnFocus="true"
        android:text="Details"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/locations"
        android:layout_width="115dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginRight="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Locations"
        android:textSize="15dip"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/news"
        android:layout_width="128dip"
        android:layout_height="54dip"
        android:layout_gravity="center"
        android:layout_marginLeft="0.5dip"
        android:layout_weight="1"
        android:gravity="center"
        android:selectAllOnFocus="true"
        android:text="news"
        android:textSize="15dip"
        android:textStyle="bold" />
</LinearLayout>

</RelativeLayout>

在此处输入图像描述

于 2013-10-10T13:56:40.010 回答
0

是否为不同的屏幕尺寸添加了不同的布局?

参考:http: //developer.android.com/guide/practices/screens_support.html

对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,该应用程序为不同的屏幕尺寸提供不同的布局设计,并为小、中、高和超高密度屏幕提供不同的位图可绘制对象。

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

Manifest 中的以下代码支持所有 dpi。

<supports-screens android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true"
          android:xlargeScreens="true"
          android:anyDensity="true" />
于 2013-10-10T13:32:06.087 回答
0

尝试这个,

使用 layout_weight 属性,您可以准确地做到这一点。

于 2013-10-10T13:32:22.260 回答
0

仔细检查以确保您具有正确的层次结构以及包含其他布局的正确布局。对于“保留、收藏、分享”从顶部算起的第二个栏,在文本视图上使用权重为 1 的线性布局,并确保电视的宽度 = 0dp。然后使用“详细信息、位置、新闻”创建底部栏并将其与底部对齐。然后将中间的白色部分作为具有属性 layout_below="topbar" 和 layout_above="bottombar" 的布局

这里有一些 sudo 代码给你一个想法

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <!-- Top Bar -->
    <LinearLayout
        andorid:name="@+id/nav_bar"
        android:layout_alignParentTop="true"
        android:layout_width=... />

    <!--  Second to Top Bar -->
    <LinearLayout
        android:name="@+id/reserve_bar"
        android:layout_width="fill_parent"
        android:layout_height="54dp"
        android:layout_below="@id/nav_bar"
        android:orientation="vertical" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />
    </LinearLayout>

    <!-- Very Bottom Bar -->
    <LinearLayout
        android:name="@+id/details_bar"
        android:layout_width="fill_parent"
        android:layout_height="54dp"
        android:layout_alignParentBottom="true"
        android:orientation="vertical" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            ... />
    </LinearLayout>

    <!-- Body of the layout below 2nd bar and above bottom bar-->
    <RelativeLayout
        android:name="@+id/body_layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/reserve_bar"
        android:layout_above="@id/detail_bar" >

        <RelativeLayout>
            android:stuff="..."
        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>

我认为问题在于您在某些不应该存在的东西上具有 align_bottom 属性。这些是覆盖 alignParentBottom

于 2013-10-13T20:52:54.900 回答