将 ImageView 和 TextView 放入布局中
我有水平 ListView 和以下项目:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:src="@drawable/a" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Title"
android:textColor="#FFFFFF" />
</LinearLayout>
这基本上是缩略图和其下面的一些文本。问题是 - 当此项目显示在 ListView 中时,底部的文本仅部分可见 - 底部消失。看起来 ImageView 没有缩放以适合 TextView。
但是,如果将 TextView 放在 ImageView 之上,一切看起来都很好 - ImageView 会按比例缩小并且文本完美契合。那么..为什么?
让我举例说明:
TextView 位于底部
TextView 位于顶部(图像完美缩放)
并根据要求 main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="100" >
<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top Activity Header"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="90"
android:orientation="vertical"
android:weightSum="100" >
<LinearLayout
android:background="#6056CC"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="30"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="40" >
<test.name.Coverflow
android:id="@+id/coverflow"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout
android:background="#BF5E76"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="30"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_height="65dp"
android:id="@+id/linearLayout2"
style="@style/TabPanel">
</LinearLayout>
</LinearLayout>
I have horizontal ListView with with following item:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:src="@drawable/a" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Title"
android:textColor="#FFFFFF" />
</LinearLayout>
This is basically thumbnail and some text beneath it. The problem is - when this item is displayed in ListView the text at bottom is only partially visible - bottom part disappears. Looks like ImageView is not scaling to fit TextView.
But if you put TextView above ImageView everything looks fine - ImageView is scaled down and text fits perfectly. So..why?
Let me illustrate:
TextView at bottom
TextView at top (images scaled perfectly)
And as requested main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="100" >
<LinearLayout
android:id="@+id/linearLayout0"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top Activity Header"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="90"
android:orientation="vertical"
android:weightSum="100" >
<LinearLayout
android:background="#6056CC"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="30"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="40" >
<test.name.Coverflow
android:id="@+id/coverflow"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout
android:background="#BF5E76"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="30"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_height="65dp"
android:id="@+id/linearLayout2"
style="@style/TabPanel">
</LinearLayout>
</LinearLayout>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请尝试这个。希望这会有所帮助。
Please try this. Hope this would help.
所以嘿,我遇到了同样的问题,这就是我为使其工作而所做的:
技巧是将 TextView 和 ImageView 的layout_height 设置为“0dip”。将ImageView 的layout_weight 设置为“2”,将TextView 的layout_weight 设置为“1”。将 ImageView 的scaleType 设置为“fitEnd”。将 adjustmentViewBounds 设置为“true”,瞧!甚至在您放大和缩小尺寸时也可以使用,这样您就不会丢失 TextView,并且只有图像会缩小。
So hey I had this same problem and this is what I did to get it work:
The trick is to set the TextView and the ImageView's layout_height to "0dip". Set the ImageView's layout_weight to "2" and the TextView's layout_weight to "1". Set the ImageView's scaleType to "fitEnd". Set adjustViewBounds to "true" et voila! Even works when you size up and down so you don't lose the TextView and only the image scales down.
您可以为此使用相对布局。它可能对您有帮助。下面的代码
通过使用relativelayout,可以将textview设置在imageview的下方,这样imageview和textview就可以换行了。
编辑:
所以现在整个红块将位于之前的布局下方..可能有帮助
You can use relative layout for this.it may helpfull for you. The below code
By using relativelayout, you can set textview below the imageview so that imageview and textview can wrap.
Edit:
so now entire redblock will come below the previous layout..may b helpful