如何在android中垂直平移按钮/布局?
我有一个像计算器一样的布局,每行有4个按钮,有5行。我使用LinearLayout
创建了这些行。我在LinearLayout
的每个按钮中使用android:layout_weight="1"
来完全填充每行的宽度。但我不知道如何以这种方式填充垂直空间。后五排有残留在底部普通XDPI屏幕(的Nexus 4)如何在android中垂直平移按钮/布局?
<LinearLayout
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/entry">
<Button
android:id="@+id/seven"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="7"
android:textColor="@color/Blue_ICS"
android:textSize="@dimen/button_text_size"
/>
<Button
android:id="@+id/eight"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="8"
android:textColor="@color/Blue_ICS"
android:textSize="@dimen/button_text_size"/>
<Button
android:id="@+id/nine"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="9"
android:textColor="@color/Blue_ICS"
android:textSize="@dimen/button_text_size"/>
<Button
android:id="@+id/plus"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="+"
android:textColor="@color/Blue_ICS"
android:textSize="@dimen/button_text_size"/>
</LinearLayout>
空间布局太长,所以我在这里分享仅第一行代码,其余行是相同的了。
您应该使用TableLayout
,更换所有的LinearLayout为的TableRow。属性stretchColumns使您可以制作具有相同宽度的所有列,而无需使用重量。这样你可以使用重量来处理TableRow的高度。
在下面的例子中,我甚至添加了一些空格(空的LinearLayout)来显示结果,如计算器屏幕。我希望这是你正在寻找的! (你必须改变IDS)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/outerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/screenLayout"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:orientation="vertical"></LinearLayout>
<TableLayout
android:id="@+id/myLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/screenLayout"
android:stretchColumns="*" >
<TableRow
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<Button
android:id="@+id/seven"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="7" />
<Button
android:id="@+id/eight"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="8" />
<Button
android:id="@+id/nine"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="9" />
<Button
android:id="@+id/plus"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="+" />
</TableRow>
<TableRow
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<Button
android:id="@+id/seven"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="4" />
<Button
android:id="@+id/eight"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="5" />
<Button
android:id="@+id/nine"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="6" />
<Button
android:id="@+id/plus"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="-" />
</TableRow>
<TableRow
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<Button
android:id="@+id/seven"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="1" />
<Button
android:id="@+id/eight"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="2" />
<Button
android:id="@+id/nine"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="3" />
<Button
android:id="@+id/plus"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="*" />
</TableRow>
<TableRow
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<Button
android:id="@+id/seven"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="0" />
<Button
android:id="@+id/eight"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="," />
<Button
android:id="@+id/nine"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="/" />
<Button
android:id="@+id/plus"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:text="=" />
</TableRow>
</TableLayout>
</RelativeLayout>
结果:
是的,这将有助于平等地跨越整个布局。谢谢 – Vins
很高兴帮助! :) –
如果您的父母也是LinearLayout
,您也可以在您的行上使用android:layout_weight="1"
。
<!--parent-->
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<include
android:layout="@layout/myrow"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"/>
<include
android:layout="@layout/myrow"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"/>
<include
android:layout="@layout/myrow"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"/>
<include
android:layout="@layout/myrow"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"/>
<include
android:layout="@layout/myrow"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"/>
</LinearLayout>
没有测试它,但它应该工作。
希望这有助于
试试这个:
<LinearLayout
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
...
</LinearLayout>
<LinearLayout
android:id="@+id/first_row"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
...
</LinearLayout>
...
等。 将所有这些转换为垂直方向的线性布局
您可以尝试以下...(PseudoCode):(希望你理解逻辑...这工作..它在任何屏幕密度上延伸按钮)
<linearlayout=Outer
horizontal
weightSum=5>
<sub linearLayout=innerRow1
vertical
weightSum=1>
<enter all the buttons with weight as ".25">
</sub innerRow1>
<sub linearLayout=innerRow2
vertical
weightSum=1>
<enter all the buttons with weight as ".25">
</sub innerRow2>
<sub linearLayout=innerRow3
vertical
weightSum=1>
<enter all the buttons with weight as ".25">
</sub innerRow3>
<sub linearLayout=innerRow4
vertical
weightSum=1>
<enter all the buttons with weight as ".25">
</sub innerRow4>
<sub linearLayout=innerRow5
vertical
weightSum=1>
<enter all the buttons with weight as ".25">
</sub innerRow5>
你想填充你的行高度相等吗? –
您是否尝试更改'LinearLayout'高度属性?:'android:layout_height =“match_parent”' –
查看此链接(http://*.com/a/8105131/2345913) – CRUSADER