相对布局不会因其内容而异

时间:2013-09-24 11:33:38

标签: android android-layout

我已经写了这段代码但我面临问题,因为相对布局高度没有包装内容请帮我解决这个问题 我想要彩色布局,所以我在布局内做了布局,但是在添加了按钮和文本框后高度没有变化 如果我手动给它高度完成但我希望它根据内容而变化

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativelayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/Background"
    tools:context=".JewelInfo" >

<ImageView
    android:id="@+id/HeadIm1"
    android:layout_width="60dp"
    android:layout_height="30dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/Untitled"
    android:layout_marginLeft="10dp" />

<ImageView
    android:id="@+id/HeadIm2"
    android:layout_width="120dp"
    android:layout_height="30dp"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/HeadIm1"
    android:background="@drawable/myj"
    android:paddingLeft="10dp"
    android:layout_marginBelow="5dp"
    android:paddingBottom="5dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:layout_below="@+id/HeadIm1"
    android:background="@drawable/menu"
    android:gravity="center"
    android:text="JEWELLERY DETAILS"
    android:textColor="#000000"
    android:textColorHighlight="#000000"
    android:textSize="20dp" />

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView1"
    android:background="@drawable/Background" >


    <RelativeLayout
        android:id="@+id/rlayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/Info"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16sp"
            android:layout_marginRight="16sp"
            android:layout_marginTop="16sp"
            android:text="Fill in the details about gold jewellery that you would like accessed &amp; Find out the current market value"
            android:textColor="#CFB52B" />

        <RelativeLayout
            android:id="@+id/rlayout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/Info"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginTop="15dp"
            android:background="@drawable/menubar" >

            <Spinner
                android:id="@+id/Jtype"
                android:layout_width="95dp"
                android:layout_height="30dp"
                android:layout_alignLeft="@+id/JName"
                android:layout_below="@+id/JName"
                android:background="@drawable/Black"
                android:text="Jewellery Type"
                android:textColor="#FFFFFF"
                android:textSize="18dp" />

            <Spinner
                android:id="@+id/weight"
                android:layout_width="95dp"
                android:layout_height="30dp"
                android:layout_alignBaseline="@+id/Jtype"
                android:layout_alignBottom="@+id/Jtype"
                android:layout_alignRight="@+id/JName"
                android:background="@drawable/Black"
                android:hint="Karat"
                android:textColor="#FFFFFF"
                android:textSize="18dp" />

                <Button
                    android:id="@+id/browse"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:layout_margin="10dp"
                    android:layout_marginTop="18dp"
                    android:hint="Browse Image"
                    android:textSize="20dp" 
                    android:background="@drawable/Black" />

                <EditText
                    android:id="@+id/JWeight"
                    android:layout_width="200dp"
                    android:layout_height="30dp"
                    android:layout_alignBelow="@+id/browse"
                    android:layout_alignLeft="@+id/Jtype"
                    android:layout_below="@+id/Jtype"
                    android:layout_marginRight="11dp"
                    android:layout_marginTop="11dp"
                    android:layout_toRightof="@id/browse"
                    android:background="@drawable/Black"
                    android:ems="10"
                    android:hint="Enter Gold Weight (gms)"
                    android:textColor="#000000"
                    android:textSize="16dp"
                    android:layout_marginBottom="11dp" />


              <EditText
                    android:id="@+id/JName"
                    android:layout_width="200dp"
                    android:layout_height="30dp"
                    android:layout_alignParentRight="true"
                    android:layout_alignTop="@+id/browse"
                    android:layout_marginRight="12dp"
                    android:layout_marginBottom="11dp"
                    android:layout_toRightof="@id/browse"
                    android:background="@drawable/Black"
                    android:ems="10"
                    android:hint="Jewellery Name"
                    android:textColor="#000000"
                    android:textSize="16dp" />
                      <requestFocus />
            </RelativeLayout>

        </RelativeLayout>
    </ScrollView>

</RelativeLayout> 

4 个答案:

答案 0 :(得分:0)

您可以尝试添加

android:layout_alignParentTop="true"

到TextView“info”。这可能会对你有帮助。

答案 1 :(得分:0)

在为彼此放置视图时,您必须使用@ + id而不是@id

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativelayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/Background"
    tools:context=".JewelInfo" >

    <ImageView
        android:id="@+id/HeadIm1"
        android:layout_width="60dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="10dp"
        android:background="@drawable/Untitled" />

    <ImageView
        android:id="@+id/HeadIm2"
        android:layout_width="120dp"
        android:layout_height="30dp"
        android:layout_alignParentTop="true"
        android:layout_marginBelow="5dp"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/HeadIm1"
        android:background="@drawable/myj"
        android:paddingBottom="5dp"
        android:paddingLeft="10dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_below="@+id/HeadIm1"
        android:background="@drawable/menu"
        android:gravity="center"
        android:text="JEWELLERY DETAILS"
        android:textColor="#000000"
        android:textColorHighlight="#000000"
        android:textSize="20dp" />

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:background="@drawable/Background" >

        <RelativeLayout
            android:id="@+id/rlayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/Info"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16sp"
                android:layout_marginRight="16sp"
                android:layout_marginTop="16sp"
                android:text="Fill in the details about gold jewellery that you would like accessed &amp; Find out the current market value"
                android:textColor="#CFB52B" />

            <RelativeLayout
                android:id="@+id/rlayout1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/Info"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:layout_marginTop="15dp"
                android:background="@drawable/menubar" >

                <Spinner
                    android:id="@+id/Jtype"
                    android:layout_width="95dp"
                    android:layout_height="30dp"
                    android:layout_alignLeft="@+id/JName"
                    android:layout_below="@+id/JName"
                    android:background="@drawable/Black"
                    android:text="Jewellery Type"
                    android:textColor="#FFFFFF"
                    android:textSize="18dp" />

                <Spinner
                    android:id="@+id/weight"
                    android:layout_width="95dp"
                    android:layout_height="30dp"
                    android:layout_alignBaseline="@+id/Jtype"
                    android:layout_alignBottom="@+id/Jtype"
                    android:layout_alignRight="@+id/JName"
                    android:background="@drawable/Black"
                    android:hint="Karat"
                    android:textColor="#FFFFFF"
                    android:textSize="18dp" />

                <Button
                    android:id="@+id/browse"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:layout_margin="10dp"
                    android:layout_marginTop="18dp"
                    android:background="@drawable/Black"
                    android:hint="Browse Image"
                    android:textSize="20dp" />

                <EditText
                    android:id="@+id/JWeight"
                    android:layout_width="200dp"
                    android:layout_height="30dp"
                    android:layout_alignBelow="@+id/browse"
                    android:layout_alignLeft="@+id/Jtype"
                    android:layout_below="@+id/Jtype"
                    android:layout_marginBottom="11dp"
                    android:layout_marginRight="11dp"
                    android:layout_marginTop="11dp"
                    android:layout_toRightof="@+id/browse"
                    android:background="@drawable/Black"
                    android:ems="10"
                    android:hint="Enter Gold Weight (gms)"
                    android:textColor="#000000"
                    android:textSize="16dp" />

                <EditText
                    android:id="@+id/JName"
                    android:layout_width="200dp"
                    android:layout_height="30dp"
                    android:layout_alignParentRight="true"
                    android:layout_alignTop="@+id/browse"
                    android:layout_marginBottom="11dp"
                    android:layout_marginRight="12dp"
                    android:layout_toRightof="@+id/browse"
                    android:background="@drawable/Black"
                    android:ems="10"
                    android:hint="Jewellery Name"
                    android:textColor="#000000"
                    android:textSize="16dp" />

                <requestFocus />
            </RelativeLayout>
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

答案 2 :(得分:0)

您正在使用ScrollView。您需要对其高度进行硬编码,以便内容可以在特定高度内滚动。如果你说wrap_content那么基本上它会扩展以填充所有内容而不给你选择滚动。

此外,如果您需要,则可以在运行时通过以下方式动态设置ScrollView的高度: -

sv = (ScrollView) findViewByID(R.id.scrollView1);

sv.getLayoutParams().height = x;
sv.getLayoutParams().width = x;                //just for information, you don't need it

sv.setLayoutParams(sv.getLayoutParams);

使用此代码,您可以设置ScrollView的高度和宽度。设置高度小于ScrollView中视图所需的总高度将使其可滚动。

此外,您可以获取屏幕大小,然后相应地设置ScrollView的大小: -

对于API&lt; 13

Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight(); //not required, just to inform

int x = (int) screenWidth/10;      //replace 10 by scaling factor

sv = (ScrollView) findViewByID(R.id.scrollView1);

sv.getLayoutParams().height = x;
sv.getLayoutParams().width = x;    //just for information, you don't need it

sv.setLayoutParams(sv.getLayoutParams);

对于API&gt; = 13

Point size = new Point();
display.getSize(size);
int screenWidth = size.x;
int screenHeight = size.y;         //not required, just for info

int x = (int) screenWidth/10; //replace 10 by scaling factor
sv = (ScrollView) findViewByID(R.id.scrollView1);

sv.getLayoutParams().height = x;
sv.getLayoutParams().width = x;     //just for information, you don't need it

sv.setLayoutParams(sv.getLayoutParams);

要在运行时检查API级别,请使用

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {

         //<code> if API>=13 (HONEYCOMB_MR2 is API 13)
}

else {

         //<code> if API<13
}

希望它有所帮助。 快乐编程:)

答案 3 :(得分:0)

// try this
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:background="@drawable/Background"
              tools:context=".JewelInfo" >

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="5dp">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            <ImageView
                    android:id="@+id/HeadIm1"
                    android:layout_width="60dp"
                    android:layout_height="30dp"
                    android:background="@drawable/Untitled"/>

            <ImageView
                    android:id="@+id/HeadIm2"
                    android:layout_width="120dp"
                    android:layout_height="30dp"
                    android:layout_alignParentTop="true"
                    android:background="@drawable/myj"
                    android:layout_marginLeft="20dp"/>

        </LinearLayout>

        <TextView
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:gravity="center"
                android:text="JEWELLERY DETAILS"
                android:textColor="#000000"
                android:textColorHighlight="#000000"
                android:background="@drawable/menu"
                android:textSize="20dp" />
    </LinearLayout>

    <ScrollView
            android:id="@+id/scrollView1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@drawable/Background"
            android:layout_weight="1">


        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:orientation="vertical">

            <TextView
                    android:id="@+id/Info"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Fill in the details about gold jewellery that you would like accessed &amp; Find out the current market value"
                    android:textColor="#CFB52B" />

            <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:layout_marginTop="10dp"
                    android:background="@drawable/menubar">

                <Button
                        android:id="@+id/browse"
                        android:layout_width="100dp"
                        android:layout_height="100dp"
                        android:hint="Browse Image"
                        android:background="@drawable/Black"
                        android:textSize="20dp"/>

                <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:orientation="vertical">
                    <EditText
                            android:id="@+id/JName"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:ems="10"
                            android:hint="Jewellery Name"
                            android:textColor="#000000"
                            android:background="@drawable/Black"
                            android:textSize="16dp" />

                    <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content">
                        <Spinner
                                android:id="@+id/Jtype"
                                android:layout_width="0dp"
                                android:layout_weight="1"
                                android:layout_height="wrap_content"
                                android:text="Jewellery Type"
                                android:background="@drawable/Black"
                                android:textColor="#FFFFFF"
                                android:textSize="18dp" />

                        <Spinner
                                android:id="@+id/weight"
                                android:layout_width="0dp"
                                android:layout_weight="1"
                                android:layout_height="wrap_content"
                                android:hint="Karat"
                                android:textColor="#FFFFFF"
                                android:background="@drawable/Black"
                                android:background="@drawable/Black"
                                android:textSize="18dp" />
                    </LinearLayout>

                    <EditText
                            android:id="@+id/JWeight"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:ems="10"
                            android:hint="Enter Gold Weight (gms)"
                            android:textColor="#000000"
                            android:textSize="16dp"/>
                </LinearLayout>

            </LinearLayout>
        </LinearLayout>

    </ScrollView>

</LinearLayout>