我有多个屏幕支持的问题,我使用dp(dpi)来指定layout_heigth和layout_width,我希望这是支持多个屏幕的更好方法,但是当我尝试使用两个智能手机时,我遇到了两个不同的结果
我举个例子,这是我使用的布局:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cities_main_layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/citieslist"
android:layout_width="wrap_content"
android:layout_height="320dip"
android:layout_gravity="center_vertical"
android:layout_below="@id/cities_main_layout"
/>
<LinearLayout
android:id="@+id/cities_button_layout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/citieslist"
android:layout_gravity="center_vertical">
<Button
android:id="@+id/bycountry"
android:layout_height="50dip"
android:layout_width="105dip"
android:background="@drawable/buttonmarket"
android:text="@string/button_bycountry"
/>
<Button
android:id="@+id/top10"
android:layout_height="50dip"
android:layout_width="105dip"
android:background="@drawable/buttonmarket"
android:text="@string/button_top10"
/>
<Button
android:id="@+id/recommended"
android:layout_height="50dip"
android:layout_width="105dip"
android:background="@drawable/buttonmarket"
android:text="@string/button_recommended"
/>
</LinearLayout>
</RelativeLayout>
按钮位于布局的底部,我看到两个不同的结果:
在最后一部智能手机中,我可以看到按钮,而不是第一部我不能......出了什么问题?
我必须为任何一组屏幕写一个布局?? !!!
答案 0 :(得分:2)
你的ListView有
android:layout_height="320dip"
现在,如果手机屏幕较小,则不适合。
尝试这样做:(由于评论而编辑。这在eclipse中显示正确)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FF0000"
android:layout_above="@+id/linlay">
</ListView>
<LinearLayout
android:id="@+id/linlay"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="30dip"
android:background="#00FF00"
android:layout_alignParentBottom="true">
</LinearLayout>
</RelativeLayout>
我认为Thant应该修复它。
干杯
答案 1 :(得分:1)
正如其他人所指出的那样,你的问题是你的ListView
大小硬连线。如果你想要一个业务规则“让按钮位于底部并让ListView
填满其余的”,你实际上需要编写实现“在底部有按钮并拥有{{1}的代码填补剩下的“。
这里有两种主要方法:
使用ListView
父级按钮和LinearLayout
。使用
ListView
和android:layout_height="0px"
android:layout_weight="1"
。使用常规ListView
按钮(可能在他们自己的android:layout_height
中)和否
LinearLayout
代表他们
使用android:layout_weight
父级按钮和RelativeLayout
。
将按钮定义为ListView
。
将android:layout_alignParentBottom="true"
定义为ListView
和ndroid:layout_alignParentTop="true"
,其中android:layout_above="..."
是按钮“...
的ID。
答案 2 :(得分:0)
我会说这是因为你专门为你的ListView
声明了一个高度,然后放置了将你的按钮放在底部的LinearLayout
。尝试更改它而不是位于ListView
的底部,如
<LinearLayout
android:id="@+id/cities_button_layout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alignparentbottom="true"
android:layout_gravity="center_vertical">
我不完全确定align_parent_bottom
是否是100%正确的拼写。
答案 3 :(得分:0)
好吧,其他人在我打字的时候打败了我,哈哈,但是,是的,你很难解决很多不应该的东西,包括ListView和Buttons。看看这个:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cities_main_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/cities_button_layout"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
>
<Button
android:id="@+id/bycountry"
android:layout_height="50dip"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/buttonmarket"
android:text="@string/button_bycountry"
/>
<Button
android:id="@+id/top10"
android:layout_height="50dip"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/buttonmarket"
android:text="@string/button_top10"
/>
<Button
android:id="@+id/recommended"
android:layout_height="50dip"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/buttonmarket"
android:text="@string/button_recommended"
/>
</LinearLayout>
<ListView
android:id="@+id/citieslist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/cities_button_layout"
/>
</RelativeLayout>
您的RelativeLayout上有android:orientation
,它实际上不是RelativeLayout包含的属性。
您应该使用layout_weight
属性而不是按钮的硬连线大小。在我的示例中,所有按钮的宽度均为fill_parent
,权重为1.这使得它们均匀分布空间。
首先列出固定按钮布局,将其设置为alignParentBottom="true"
。然后将ListView设置为fill_parent,并将layout_above
设置为按钮布局。这使按钮布局保持在底部,并使ListView占据按钮上方的所有空间。
多田!