如何修复线性布局中的按钮位置

时间:2014-07-02 07:34:09

标签: java android android-linearlayout textview

我在线性布局中定义了两个组件(一个文本视图和一个按钮)。

<LinearLayout 
android:id="@+id/layout_1"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/edit_view1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize = "15sp"
    android:layout_weight="5"
    android:layout_marginTop="20dp"
    android:layout_alignParentLeft="true"
    android:gravity="center"
    android:hint="Write Greeting" />

<ImageButton
    android:id="@+id/imageButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_toRightOf="@+id/edit_view1"
    android:layout_alignParentRight="true"
    android:background="@android:color/transparent"
    android:src="@drawable/e301"/>
</LinearLayout>

如果我写长文本,我的ImageButton的位置会发生变化。我想解决这个问题。有什么建议吗?

5 个答案:

答案 0 :(得分:2)

将您的布局内容替换为:

<LinearLayout 
android:id="@+id/layout_1"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/edit_view1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textSize = "15sp"
    android:layout_weight="5"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:hint="Write Greeting" />

<ImageButton
    android:id="@+id/imageButton1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@android:color/transparent"
    android:src="@drawable/e301"/>
</LinearLayout>

答案 1 :(得分:1)

你不能在Linear布局中使用RelativeLayout的对齐属性。

查看修改后的代码:

<LinearLayout 
android:id="@+id/layout_1"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="3"
xmlns:android="http://schemas.android.com/apk/res/android">

<TextView
    android:singleLine="false"
    android:id="@+id/edit_view1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textSize = "15sp"
    android:layout_marginTop="20dp"
    android:text="etegtdrgrgbvcvbghgfffffffffffffffffffffffffffff"
    android:gravity="center"
    android:hint="Write Greeting" 
    android:layout_weight="2"/>

<ImageButton
    android:id="@+id/imageButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
     android:layout_weight="1"

    android:background="@android:color/transparent"
    android:src="@drawable/ic_launcher"
    />
</LinearLayout>

使用weight和weightSum将布局宽度保持为0 dp,因此会进行调整。另外,对于textview,请将sengleLine保留为false。

输出:

enter image description here

希望这有帮助。

答案 2 :(得分:0)

尝试以下代码: -

<LinearLayout
    android:id="@+id/layout_1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/edit_view1"
        android:layout_width="0dp"
        android:layout_weight="5"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:hint="Write Greeting"
        android:textSize="15sp" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/edit_view1"
        android:background="@android:color/transparent"
        android:src="@drawable/e301" />
</LinearLayout>

使用重量然后你必须有width = 0dp(水平)和heigth = 0dp(垂直)

答案 3 :(得分:0)

  1. 使用权重:您没有定义布局的weightSum,因此您的权重现在无用。将父布局的weightSum设置为6(以便使用您的值)或100,并将子项的权重设置为百分比。并将子视图的宽度更改为0dp

  2. [可选]将按钮的宽度设置为match_parent,这样就可以占用所有剩余空间。

  3. 在LinearLayout layout_toRightOf中,layout_alignParentRight,layout_alignParentLeft是多余的。请改为使用gravity作为子视图。 (对于Button,它将是'gravity =“right”)。

答案 4 :(得分:0)

使用以下编码。告诉我你是否想要更好的对齐。我使用默认默认图像进行对齐。如果你想要比这更好,那么也要给出buttom图像。

<LinearLayout
        android:id="@+id/layout_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <TextView
                android:id="@+id/edit_view1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginTop="20dp"
                android:gravity="center"
                android:hint="Write Greeting dfdsfdsfsdfadsfdfadf"
                android:textSize="15sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="3" >

            <ImageButton
                android:id="@+id/imageButton1"
                android:gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:src="@drawable/ic_launcher" />
        </RelativeLayout>
    </LinearLayout>