我目前正在尝试整理一个由几个输入控件和一个列表视图组成的布局,并使用layout_weight我已经让它在Android Studio预览中看起来像我想要的那样。但是,在实际设备上,布局看起来完全不同。
我对Android很新,并且以前在布局方面遇到了一些问题,所以我可能会遗漏一些东西。但是,我一直在阅读不同类型的布局和layout_weight,到目前为止我发现的所有内容都让我觉得结果在Android Studio的预览中看起来像。在这种情况下,我可以很容易地解决另一种布局,但我更愿意真正了解错误,因为我将来可能再次面临同样的问题。
下面是我的布局代码和比较图片。 任何想法或提示都非常感谢。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/input_title"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:hint="@string/title"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/input_submit"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:text="@string/input_submit"/>
<Button
android:id="@+id/input_date"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toLeftOf="@id/input_submit"
android:text="@string/input_date"/>
<EditText
android:id="@+id/input_amount"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@id/input_date"
android:layout_toLeftOf="@id/input_date"
android:hint="@string/amount"
android:inputType="numberDecimal"/>
</RelativeLayout>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="6"/>
</LinearLayout>
Android Studio预览:http://i.stack.imgur.com/4bWM6.png
设备上的实际布局:http://i.stack.imgur.com/MJbOX.png
答案 0 :(得分:0)
发生这种情况是因为您没有向父版布局声明标准 WeightSum ,因此请将android:weightSum="8"
添加到您的主LinearLayout
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="8">
<!-- your code -->
</LinearLayout>
并且权重必须 8 ,因为您为视图和布局提供了权重( 1 , 1 , 6 ),所以父布局的整个weight_sum
必须 8
答案 1 :(得分:0)
需要为ListView和input_amount构建layout_weight,其余的是wrap_content:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/input_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/title"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input_amount"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="@string/amount"
android:inputType="numberDecimal"/>
<Button
android:id="@+id/input_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/input_date"/>
<Button
android:id="@+id/input_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/input_submit"/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>