layout_weight对于editfield不起作用

时间:2016-04-27 05:31:50

标签: android

下面是我对android视图布局的定义。有三个组件,一个编辑区,一个按钮和一个地图。文本字段和按钮将放在位于视图顶部的嵌套线性布局上。地图将显示在编辑区域下方。我的问题是编辑域宽度。我已将layout_weight指定为编辑字段为10,按钮为1。但是,视图将显示如下截图。编辑区的宽度非常小。我希望它比按钮宽度大10倍。我怎么能这样做?

<?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="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"
android:orientation="vertical"
tools:context="com.lenovo.mds.lenovopoc.MainActivity">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="horizontal">
    <EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="10"
        />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="button"/>
</LinearLayout>

<com.amap.api.maps2d.MapView
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="7"/>

</LinearLayout>

enter image description here

7 个答案:

答案 0 :(得分:2)

你应该给#34; match_parent&#34;到LinearLayout。 WeightSum不是强制性的。问题是因为width =&#34; wrap_content&#34;。如果您将宽度设置为&#39; Match_parent&#34;然后它会正确对齐。

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="horizontal">
    <EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="7"
        />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:text="button"/>
</LinearLayout>

答案 1 :(得分:2)

<强>机器人:weightSum

  

定义最大重量总和。如果未指定,则总和通过计算   添加所有子项的layout_weight。这可以用于   实例给予单个孩子50%的总可用空间   给它一个layout_weight为0.5并将weightSum设置为1.0。

您应该使用android:weightSum="11"

<强>最后

  <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:weightSum="11"
        android:orientation="horizontal">
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10"
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="button"/>
    </LinearLayout>

答案 2 :(得分:2)

android:weightSum =“11”是您问题的解决方案。

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:weightSum="11"
        android:orientation="horizontal">
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10"
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="button"/>
    </LinearLayout>

    <com.amap.api.maps2d.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="7"/>

    </LinearLayout> 

答案 3 :(得分:1)

在edittext的父布局中,你必须设置width =&#34; match_parent&#34;

<?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="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"
    android:orientation="vertical"
    tools:context="com.lenovo.mds.lenovopoc.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10"
            />
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="button"/>
    </LinearLayout>

    <com.amap.api.maps2d.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="7"/>

    </LinearLayout>

答案 4 :(得分:1)

你只需要这个。

Give match_parent to your LinearLayout and android:weightsum="11"

<?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="match_parent"
    android:orientation="vertical"
    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.lenovo.mds.lenovopoc.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="11">

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="8" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:text="button" />
    </LinearLayout>

    <com.amap.api.maps2d.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="7" />

</LinearLayout>

Here is screen shot how it Looks.

enter image description here

答案 5 :(得分:1)

我认为这对你有用。

<?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="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"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button"/>
    </LinearLayout>

    <com.amap.api.maps2d.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="7"/>

</LinearLayout>

this is the final output

答案 6 :(得分:0)

你的问题是线性布局父级,不要设置高度'0dp'。你需要把它放在match_parent。另外,其他内部布局和按钮,我建议不要将0dp用于高度或宽度