[英]Multiple Screen Support
我在多屏支持方面遇到一些问题,我使用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>
该按钮位于布局的底部,我看到两个不同的结果:
在最后一部智能手机中,我可以看到按钮,而在第一部智能手机中,我无法...出了什么问题?
我必须为任何一组屏幕编写一个布局?
您的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应该修复它。
干杯
正如其他人指出的那样,您的问题是您硬连接了ListView
的大小。 如果要使业务规则“在底部具有按钮,并让ListView
填充其余部分”,则实际上需要编写实现“在底部具有按钮,并让ListView
填充其余部分”的代码。
这里有两种主要方法:
对按钮和ListView
使用LinearLayout
父级。 将android:layout_height="0px"
和android:layout_weight="1"
用于ListView
。 对按钮使用常规的android:layout_height
(大概在它们自己的LinearLayout
),对它们不使用android:layout_weight
对按钮和ListView
使用RelativeLayout
父级。 将按钮定义为具有android:layout_alignParentBottom="true"
。 将ListView
定义为具有ndroid:layout_alignParentTop="true"
和android:layout_above="..."
,其中...
是按钮的LinearLayout
的ID。
我想说这是因为您要特别声明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%正确的拼写。
好吧,当我打字时,其他人都在击败我,哈哈,但是,是的,您很难使用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占据按钮上方的所有空间。
多田!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.