如何保证ImageView的空间,防止缩小?

3
我需要创建一个XML文件,其中包含以下内容:
* 两个TextView,分别显示不同的文本(1-3行),一个TextView在另一个下方。
* 一个ImageView位于2个TextView的右侧,垂直居中,大小为30x30像素。

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

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

我尝试指定width和minWidth的值。也尝试了layout_weight="1"用于ImageView。还尝试将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>

2
你可能会更喜欢使用RelativeLayout。 - Kyle P
ImageView的最大宽度和高度是多少?如果您能模拟所期望的结果,将会很有帮助。 - Octavian Helm
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设备,因此无法测试上述代码。


0
非常感谢Emile!它起作用了!你让我的周末变得美好! :)
我必须立即尝试它(虽然现在是星期五晚上),这是我的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>

1
请将我的答案设置为正确答案,这样其他人就可以看到您的问题已得到解答。谢谢。 - Emile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接