3

我需要创建一个包含以下内容的 XML:
* 两个具有不同文本(1-3 行)的 TextView,一个 TextView 在另一个下方。
* 2 个 TextView 右侧的一个 ImageView,垂直居中,30x30 像素。

一个主要的限制是它不能在填充到 PopupWindow 时占据整个屏幕,这意味着我不能在很多地方使用属性 fill_parent。

我尝试了很多不同的布局,但是当文本很长时,ImageView 不断被 TextViews 推开。当文本为“半长”时,图像变得很小但仍然可见。我希望它始终为 30x30 像素,文本可以换行并使用另一行。

我试图指定宽度和 minWidth 的值。还为 ImageView 尝试了 layout_weight="1"。还尝试将 ImageView 包装成 LinearLayout 并给出 layout_weight="1" 参数。没有任何效果。

这是不起作用的示例:

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

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

       <TextView android:id="@+id/popupTitle" android:layout_width="wrap_content"
      android:layout_height="wrap_content"/>

       <TextView android:id="@+id/popupContent"
      android:layout_width="wrap_content" android:layout_height="wrap_content"/>
    </LinearLayout>

    <ImageView android:layout_width="wrap_content"
       android:layout_height="wrap_content" android:src="@drawable/img_30x30_px" />
 </LinearLayout>
4

2 回答 2

3

我遇到了类似的问题,我发现 TableView 布局对我有用。这需要一段时间,但您可以使用拉伸和连接列属性来更改列扩展以匹配内容的行为。

请注意,您应该能够将文本的 linearLayout 设置为 fill_parent(以填充列空间)。

阅读有关 TableRow 如何工作的内容http://developer.android.com/resources/tutorials/views/hello-tablelayout.html

<TableRow>
    <!-- Column 1 -->
    <LinearLayout android:layout_width="fill_parent"
   android:layout_height="wrap_content" android:orientation="vertical">

            <TextView
                android:layout_column="1"
                android:text="Open..."
                android:padding="3dip" />
            <TextView
                android:text="Ctrl-O"
                android:gravity="right"
                android:padding="3dip" />
    </LinearLayout>
    <!-- Column 2 -->
    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:src="@drawable/img_30x30_px" />
</TableRow>

(恐怕我不在一台装有 Android 的机器上,所以我无法测试上面的代码)。

于 2010-11-05T15:37:13.983 回答
0

非常感谢埃米尔!有用!你让我的周末!:)

我不得不立即尝试(虽然现在是星期五晚上),这就是我的 xml 现在的样子:

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

<TableRow>
<!-- Column 1 -->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical">

  <TextView android:id="@+id/popupTitle"
  android:layout_width="wrap_content" android:layout_height="wrap_content"/>

  <TextView android:id="@+id/popupContent"
  android:layout_width="wrap_content" android:layout_height="wrap_content" />
  </LinearLayout>

  <!-- Column 2 -->
  <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:layout_gravity="center_vertical" android:src="@drawable/img_30x30_px" />

</TableRow>
</TableLayout>
于 2010-11-05T18:56:17.937 回答