我已经阅读了我能找到的所有内容,而我无法理解这一点。我有一个带有标题的XML,然后是一个listview,然后是底行的2个按钮。为了使布局看起来很完美,我已经“硬编码”了listview的大小(467dp)。这在我的三星Galaxy S4上很好,但我不确定它在其他尺寸略有不同的手机上是否合适。我在Galaxy 8“标签上进行了测试,看起来并不正确。然后我在10.1”标签上进行了测试,它(再次)看起来并不合适。基本上底部按钮位于屏幕中间。我通过为sw600dp和sw720dp创建布局来解决这个问题。对于每个我必须硬编码listview的不同大小。在我看来,有一种更好的方法来获得一个在任何设备上显示(相对)相同的heading-listview-button XML。任何人都可以告诉我如何更改我的XML,所以我不必硬编码列表视图的大小?
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/title_line"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="@string/workout_locations">
</TextView>
<ListView
android:id="@+id/location_list"
android:layout_width="match_parent"
android:layout_height="467dp"
android:longClickable="true" >
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/help_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:contentDescription="@string/help_description"
/>
<ImageButton
android:id="@+id/add_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:contentDescription="@string/add_description"
/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
android:layout_weight =“1在按钮
中添加此项答案 1 :(得分:0)
使用layout_weight占用尽可能多的空间。
<ListView android:id="@+id/location_list"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:longClickable="true" >
</ListView>
答案 2 :(得分:0)
如果您已对某些尺寸进行了硬编码,您可以打赌它在大多数设备上看起来不太好。为了做到这一点,最好将layout_height
和layout_weight
设置为wrap_content
或match_parent
,具体取决于您的需求。
您描述的案例还有另一个重要工具:layout_weight
,您可能已经使用过。与ListView
混淆以适应您想要的设计可能在第一次很难,但一旦您发现如何设置其布局,其他人就很容易。
在我的情况下,这个定义总是按原样运作:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/mylistview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scrollbars="vertical" >
</ListView>
</LinearLayout>
看看它:我设置了一个单数LinearLayout
(在这种情况下因为它有更多的视图而不仅仅是我展示的ListView
),但我正在设定权重其中ListView
为sumWeights
,LinearLayout
为ListView
1.这样您就可以确保{{1}}尽可能扩展,而无需硬编码值。
这只是玩弄它一段时间的问题,但硬编码的值越少,其他设备的适应性就越强。
答案 3 :(得分:0)
我想知道这是否有帮助:
确保整个布局是relativeLayout,并在其中放置listview
<ListView
android:id="@+id/location_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp" // the size of the buttons height
android:longClickable="true" >
</ListView>
在它下面是另一个带有按钮的相对布局。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true">
<ImageButton
android:id="@+id/help_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:contentDescription="@string/help_description"
/>
<ImageButton
android:id="@+id/add_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:contentDescription="@string/add_description"
/>
如果这仍然导致问题,那么你可以写:
android:layout_above="@+id/relButtonLayout"
列表视图中的。