我有水平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缩小了,文字非常合适。 So..why?
让我说明一下:
底部的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>
答案 0 :(得分:1)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:gravity="center_vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical" >
<TableRow
android:layout_gravity="left"
android:padding="5dp" >
<ImageView
android:id="@+id/thumbnail"
android:layout_width="100dp"
android:layout_height="100dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:src="@drawable/a"
android:layout_gravity="left">
</ImageView>
</TableRow>
<TableRow
android:gravity="left"
android:padding="5dp" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:textColor="@android:color/black"
/>
</TableRow>
</TableLayout>
</LinearLayout>
请试试这个。希望这会有所帮助。
答案 1 :(得分:1)
嘿,我有同样的问题,这就是我为了让它发挥作用而做的事情:
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical"
android:layout_gravity="center|center_vertical">
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="2"
android:adjustViewBounds="true"
android:scaleType="fitEnd"
android:layout_gravity="center|center_vertical"
android:src="@drawable/ic_pen" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="1"
android:layout_gravity="center|center_vertical"
android:text="@string/main_write"
android:textColor="@color/color_darkgray"
android:textSize="24sp" />
</LinearLayout>
诀窍是将TextView和ImageView的layout_height设置为“0dip”。将ImageView的layout_weight设置为“2”,将TextView的layout_weight设置为“1”。将ImageView的scaleType设置为“fitEnd”。将adjustViewBounds设置为“true”等瞧!即使你上下调整大小也能正常工作,这样你就不会丢失TextView,只有图像会缩小。
答案 2 :(得分:0)
您可以使用相对布局。这可能对您有所帮助。以下代码
<RelativeLayout 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"
android:layout_below="@id/thumbnail"/>
</RelativeLayout>
通过使用relativelayout,您可以在imageview下面设置textview,以便imageview和textview可以包装。
编辑:
<RelativeLayout>
<LinearLayout
android:id="@+id/linearlayout1">
//here the textview and imageview code
</LinearLayout>
<LinearLayout
android:layout_below="@id/linearlayout1"
>
//here the redblock code
</LinearLayout>
所以现在整个redblock都会低于之前的布局..可能会有帮助