2

我有一个ImageView,图像是从网上加载的,宽度可能会有所不同。下面我有一个TextView图像的描述。我希望 与TextView一样宽ImageView

我的尝试是这样的:

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/iv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal" />

            <TextView
                android:id="@+id/imagedescription"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:textAppearance="@style/SmallTextGray" />
        </LinearLayout>

它以某种方式起作用,因为TextView' 的宽度是根据 的宽度设置的ImageView,但TextView在 2 行之后结束:

在此处输入图像描述

我知道我可以TextView在知道图像的宽度之后以编程方式设置 ' 的宽度,但是在 XML 布局中也有办法做到这一点吗?

4

7 回答 7

5

我不知道它是否会起作用,但在加载图像后尝试在您的代码中执行:

textView.setWidth(imageView.getDrawable().getIntrinsicWidth());
于 2013-08-08T08:13:33.480 回答
4

稍微改变布局:替换LinearLayoutRelativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/imagedescription"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/iv"
        android:layout_alignRight="@+id/iv"
        android:layout_below="@+id/iv"
        android:layout_marginTop="8dp"
        android:gravity="center_horizontal"
        android:textAppearance="@style/SmallTextGray" />

</RelativeLayout>

这样,TextView 始终位于 imageView 下方,并且其边界与 imageViews 对齐

于 2013-08-08T08:22:25.363 回答
1
You can use weight like this:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="5">

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="1" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:text="2" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="3" />
于 2013-08-08T08:16:12.990 回答
0

您可以在 xml 中使用 wight 属性,并对 imageview 和 textview 赋予相同的权重。那么两个大小将相等

于 2013-08-08T08:13:18.133 回答
0

在你的情况下这样做:

            <ImageView
                android:id="@+id/iv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center_horizontal" />

            <TextView
                android:id="@+id/imagedescription"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_weight="1"

                android:textAppearance="@style/SmallTextGray" />
        </LinearLayout>
于 2013-08-08T08:18:47.767 回答
0

这对我有用:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_gravity="center_horizontal"
              android:orientation="vertical">

    <LinearLayout android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_horizontal"
                  android:orientation="vertical">
        <ImageView
                android:id="@+id/iv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/controller"
                android:layout_gravity="center_horizontal"/>

        <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <TableLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                <TableRow>
                    <TextView
                            android:layout_width="wrap_content"
                            android:text="asdasdasasasdasdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdsadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdsdasdasdasdsadsadsadasdasdsadsadsadasdasdasdasdasdasddasdasdasdasdasdasdasdsadasdasdasdasdasdasdsadasdasdsa..."/>
                </TableRow>
            </TableLayout>
        </RelativeLayout>
    </LinearLayout>

</LinearLayout>

在此处输入图像描述 在此处输入图像描述

于 2013-08-08T08:28:02.740 回答
0

试试这个。这会奏效

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_gravity="center_horizontal"
  android:orientation="vertical" >

   <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent" 
       android:layout_gravity="center_horizontal"       
      android:orientation="vertical" >

      <ImageView
          android:id="@+id/iv"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal"
          />

       <TextView
          android:id="@+id/imagedescription"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center_horizontal"
          android:typeface="monospace" />
        </LinearLayout>

      </LinearLayout>
于 2013-08-08T08:45:32.740 回答