在GridLayout中使android水平LinearLayout适合列

时间:2016-12-13 11:57:39

标签: android android-layout android-linearlayout android-gridlayout

我正在尝试创建一个包含从左到右顺序的元素和一个按钮的视图,该按钮附加到右上角,具有固定大小。我目前的布局是:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="2">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_column="0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView
            android:id="@+id/Image1"
            android:layout_height="40dp"
            android:layout_width="40dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="24dp"
            android:layout_marginBottom="16dp"
            android:src="@drawable/image_src"
            android:visibility="gone" />
        <TextView
            android:id="@+id/Text1"
            android:text="SampleText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:layout_marginBottom="16dp"
            android:layout_marginTop="24dp"
            android:textSize="16sp"
            android:gravity="center" />
    </LinearLayout>
    <ImageButton
        android:id="@+id/Button1"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_gravity="right"
        android:layout_column="1"
        android:src="@drawable/imageBtn"
        style="?android:attr/borderlessButtonStyle" />
</GridLayout>

当文字很短时,一切似乎都没问题

When text is short - everything is ok:

但问题是文本可能很长,并且它与按钮重叠。

Not ok image

如何使按钮始终可见并且文本正好包裹在它的左上角?

1 个答案:

答案 0 :(得分:0)

您可以使用RelativeLayout实现此目的。在xml布局中检查下面的一个。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageButton
        android:id="@+id/Button1"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentRight="true"
        android:layout_marginTop="24dp"
        android:src="@mipmap/ic_launcher" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/Button1"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/Image1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="24dp"
            android:src="@mipmap/ic_launcher"
            android:visibility="visible" />

        <TextView
            android:id="@+id/Text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="24dp"
            android:text="SampleText sdfsd sd sdf sdfs  sdfsd fsf fsdf sd s dsfs sfs sfs sdf s fsdf sdf fsdf  sdf sf sd fsdf sfsdf sfsd ffs sdf sdf sfsdf sfs sdfs sfsdfs sfs sf sfs fsfsf sf ssf "
            android:textSize="16sp" />
    </LinearLayout>
</RelativeLayout>