相对布局中的格式按钮大小

时间:2013-09-22 10:41:12

标签: android button android-linearlayout relativelayout

我正在创建一个反馈表单,最后有两个按钮,“清除”和“发送”。这必须在相对布局中完成。

问题是按钮不够宽,我希望按钮与它们上方的宽度相匹配。

在尝试更改宽度之前,这是应用程序:

enter image description here

代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/feedback_name_hint" >
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText1"
        android:hint="@string/feedback_email_hint" >
    </EditText>

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ratingBar1"
        android:layout_alignLeft="@+id/editText2"
        android:layout_alignRight="@+id/editText2"
        android:layout_below="@+id/editText2"
        android:gravity="center_vertical|top"
        android:hint="@string/feedback_actual"
        android:inputType="textMultiLine" >

    </EditText>

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/Button01"
        android:layout_alignLeft="@+id/editText3"
        android:layout_marginBottom="21dp" />

  <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ratingBar1"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="18dp"
        android:text="@string/Clear" />

    <Button
        android:id="@+id/Button01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/button1"
        android:text="@string/Send" /> 


</RelativeLayout>

我尝试在按钮周围创建线性布局,如下所示:

    <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="top"
    android:orientation="horizontal" >

    <Button 
        android:id="@+id/button3"
        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:text="@string/Clear"
    />
    <Button
        android:id="@+id/button4"
        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:text="@string/Send"
    />
 </LinearLayout>

但是,虽然按钮是我想要的尺寸,但它们会跳到视图的顶部,并影响其他元素:

enter image description here

非常感谢任何对此的帮助,谢谢。

解决:

它通过使用以下线性布局的按钮进行工作:(注意评级栏如何设置为高于linearlayoutid

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linearlayout_id"
        android:layout_alignLeft="@+id/editText3"
        android:layout_marginBottom="21dp" />

 <LinearLayout 
     android:id="@+id/linearlayout_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:gravity="center_horizontal"
        android:layout_marginBottom="18dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/Clear" />

        <Button
            android:id="@+id/Button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/Send" />
 </LinearLayout>

2 个答案:

答案 0 :(得分:1)

试试这个 用以下内容替换xml代码。

我已将android:layout_above="@+id/linearlayout_id"添加到RatingBar,并通过向两个按钮提供LinearLayout将您的按钮添加到android:layout_weight="1"

<RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linearlayout_id"
        android:layout_alignLeft="@+id/editText3"
        android:layout_marginBottom="21dp" />

    <LinearLayout
        android:id="@+id/linearlayout_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:gravity="center_horizontal"
        android:layout_marginBottom="18dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@String/Clear" />

        <Button
            android:id="@+id/Button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@String/Send" />
    </LinearLayout>

这应该可行

答案 1 :(得分:0)

您尝试将它们放入LinearLayout是正确的。只需将android:layout_alignParentBottom="true"添加到LinearLayout即可,它应该适合您。

更新: 另外,请将android:layout_height="fill_parent"中的android:layout_height="wrap_content"更改为LinearLayout