我知道这个问题已被问了很多时间,而且我已经阅读了很多这些问题,但我似乎没有找到答案。我很抱歉,如果那里有一个我没见过的答案。
我的问题是我想制作一个可以重新调整大小到任何屏幕大小的屏幕。 为了实现这一点,我不想在布局中设置任何类型的静态宽度或高度。
问题是我想要嵌套权重。原因是我在TextView和另一个LinearLayout之间的LinearLayout中有一个ListView。
包含ListView的LinearLayout由ListView本身和另一个LinearLayout组成。
我想要对ListView和LinearLayout(带箭头的两个按钮)进行加权。我还想让整个屏幕以下一种方式加权:
我快速展示了屏幕,以便你们更好地理解这一点。
我认为解决方案是将最外部的布局更改为RelativeLayout。 问题是如果我这样做,ListView只会将底部的LinearLayout推出屏幕。
有没有办法对RealtiveLayout组件进行加权,或者至少是一个没有考虑的LinearLayout实现"性能不好"?
我接下来会放置布局代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/multiPlayerHubLinearLayout"
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" >
<TextView
android:id="@+id/multiplayerHubHeaderTextView"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:ellipsize="marquee"
android:singleLine="true"
android:text="@string/game_inventory_header" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:baselineAligned="false"
android:orientation="horizontal"
android:layout_weight="10" >
<ListView
android:id="@+id/game_inventory_listView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="10" >
</ListView>
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/game_inventory_upButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="@string/game_all_upButton" />
<Button
android:id="@+id/game_inventory_downButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="@string/game_all_downButton" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/game_inventory_scanButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_all_scanButton" />
<Button
android:id="@+id/game_inventory_supportButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_inventory_support" />
<Button
android:id="@+id/game_inventory_attackButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_inventory_offensive" />
<Button
android:id="@+id/game_inventory_healingButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_inventory_healer" />
</LinearLayout>
提前致谢!
答案 0 :(得分:1)
如果您使用RelativeLayout,您可以先使用Buttons声明LinearLayout,然后使用ListView声明ListLayout,这将使ListView不会将按钮推离屏幕,因为它只会占用剩余的空间。按钮被放置。 layout_weight
在RelativeLayout中不起作用。
小例子:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/multiPlayerHubLinearLayout"
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">
<TextView
android:id="@+id/multiplayerHubHeaderTextView"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:ellipsize="marquee"
android:singleLine="true"
android:text="@string/game_inventory_header" />
<LinearLayout android:id="@+id/buttonLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<!-- Buttons here -->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:layout_above="@id/buttonLayout"
android:layout_below="@id/multiplayerHubHeaderTextView"
android:orientation="horizontal">
<!-- ListView etc. here -->
</LinearLayout>
</RelativeLayout>
这种方法的缺点是你不能使用权重,但它们对TextView和按钮栏很重要吗?
答案 1 :(得分:1)
Try this way,hope this will help you to solve your problem.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/multiPlayerHubLinearLayout"
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" >
<TextView
android:id="@+id/multiplayerHubHeaderTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:text="@string/game_inventory_header" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/game_inventory_listView"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
</ListView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/game_inventory_upButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="@string/game_all_upButton" />
<Button
android:id="@+id/game_inventory_downButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="@string/game_all_downButton" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/game_inventory_scanButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_all_scanButton" />
<Button
android:id="@+id/game_inventory_supportButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_inventory_support" />
<Button
android:id="@+id/game_inventory_attackButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_inventory_offensive" />
<Button
android:id="@+id/game_inventory_healingButton"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/game_inventory_healer" />
</LinearLayout>
</LinearLayout>