Android linearLayout子级不扩展以填充父级

时间:2016-10-15 12:49:55

标签: java android android-linearlayout

我有以下作为我的布局:

<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="match_parent"
android:orientation="vertical"
tools:context=".MyActivity">

    <EditText
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/bubble_b"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <RatingBar
        android:id="@+id/rating"
        style="?android:attr/ratingBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:numStars="5"
        android:rating="4"
        android:stepSize="0.5"
        android:layout_weight="1"/>

这使我的edittext和ratingbar被推到顶部,两个高度都只是'wrap_content'。我也尝试过RelativeLayouts,所有发生的事情都是EditText占用整个屏幕并将评级栏推离屏幕。

为什么布局权重不按预期工作?如果edittext权重为3且评级栏为1,我会假设edittext占据屏幕的75%,依此类推?

背景是一个9patch图像,所以它也应该没有问题。

谢谢

3 个答案:

答案 0 :(得分:1)

我相信你想要这样的东西

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="EditText"
        android:ems="10"
        android:id="@+id/editText"
        android:layout_weight="0.53" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.53">

    <RatingBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:id="@+id/ratingBar"/>

    </RelativeLayout>
</LinearLayout>

答案 1 :(得分:0)

更改LinearLayout的

        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',
            'username' => 'myname.mylast@gmail.com',
            'password' => 'mypass',
            'port' => '587',
            'encryption' => 'tls',
        ],

android:layout_height="wrap_content"

此外,不是将“0dp”设置为EditText,而是将RatingBar设置为android:layout_height="match_parent".

<强> [更新]

match_parent

答案 2 :(得分:0)

将相对布局用于居中对象:

<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="match_parent"
android:orientation="vertical"
tools:context=".MyActivity">

    <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

        <EditText
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bubble_b"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_centerInParent="true" />


        </RelativeLayout>

       <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

        <RatingBar
        android:id="@+id/rating"
        style="?android:attr/ratingBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:numStars="5"
        android:rating="4"
        android:stepSize="0.5"
        android:layout_weight="1"/>

        </RelativeLayout>