在Android应用程序中设置布局,有一些关于定位按钮的问题

时间:2011-02-24 16:18:33

标签: android layout button

正如标题所示,我正在开发一个带有布局视图的Android应用程序和两行按钮,用于完成各种任务。一排按钮位于顶部,一排位于底部,我喜欢看起来的样式。

现在对于不幸的部分:我使用了一对你不应该再使用的工具来完成这个:AbsoluteLayout,以及px中的按钮位置(和大小),而不是dp或sp。

问题是,即使我使用了更高级的布局工具,我也不知道如何将这组按钮放在屏幕的底部。这只是一个屏幕尺寸,更不用说第二个了(这就是我现在所拥有的......)

现在,这不是一个公开可用的应用程序,所以我并不十分担心通用兼容性,但是有人建议对两行中的一行5个按钮进行简单的布局XML描述屏幕的顶部和底部(以横向模式固定)???

此外,是否有人知道是否可以在运行时找到布局小部件?据我所知,重新调整它们很容易,但不能改变它们的位置?

谢谢,
R上。

4 个答案:

答案 0 :(得分:0)

你的问题真的没有简短的答案。你最好的选择是阅读一个解释并向你展示正在发生的事情的教程。我认为this one对我来说是一个很好的起点。

答案 1 :(得分:0)

有几种方法可以完成你所说的,但我可能会使用RelativeLayout。有关如何在Romain Guy's blog上使用它们的详细解释。简而言之,一组按钮将设置为layout_alignParentTop="true",其他按钮将layout_alignParentBottom设置为true - 问题已解决。您还可以在按钮上设置android:id s,这样您就可以使用android:layout_toLeftOf / android:layout_toRightOf将它们放在彼此的左/右边,或者您可以将每组按钮放在{ {1}} LinearLayout

至于在运行时重新定位元素,你绝对可以这样做 - 但你必须通过元素的android:orientation="horizontal"来做(要么创建一个适当类型的新LayoutParams对象并将其分配给LayoutParams,或通过调用View并修改返回的对象)。对于RelativeLayout的孩子,请参阅RelativeLayout.LayoutParams

答案 2 :(得分:0)

是的,使用FrameLayout和layout_gravity很容易做到。


<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
          ...
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
          ...
    </LinearLayout>
</FrameLayout>

在两个按钮栏之间夹入视图可能需要将FrameLayout更改为LinearLayout并将中心视图上的layout_weight设置为1,而不指定按钮栏的权重。

答案 3 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top">
        <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:id="@+id/button4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Button" android:layout_weight="1"></Button>
    </LinearLayout>
<LinearLayout android:id="@+id/linearLayout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="bottom" android:layout_gravity="bottom" android:layout_weight="1">
<Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="bottom"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:text="Button" android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"></Button>
        <Button android:id="@+id/button4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Button" android:layout_weight="1"></Button>
</LinearLayout>
</LinearLayout>