阻止ImageView将视图推送到屏幕外

我有一个线性布局,其中包含一个imageview和另一个线性布局,这是在屏幕上的底部栏。 我在我的项目的其他地方使用底部栏,我不认为这是问题。

问题是imageview占据了整个屏幕。 图像本身不,但是视图确实。 我似乎无法弄清楚这一点。 正如你可以看到我的XML,我没有使用fill_parent的图像视图,我已经尝试了图像的每个可能的scaleType。

有什么build议么? 此外,如果它有助于我构build到Android API 8

编辑:我已经改变了下面的XML,以便您可以使用我写的。 (这是我在图像视图中使用的图像: http : //i.imgur.com/qN5aT.jpg )

<?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:orientation="vertical" android:background="#FFFFFF" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitStart" android:src="@drawable/quote_sample_img" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is text" /> </LinearLayout> </LinearLayout> 

http://img.androidcookie.com/android/m3msH.png (对不起,没有足够的声望发布的实际图片)

Solutions Collecting From Web of "阻止ImageView将视图推送到屏幕外"

事情似乎工作,如果android:layout_weight =“1.0”被添加到ImageView。

(我不确定究竟发生了什么,布局algorithm的顺序如何,所以无法解释为什么。)

 <?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:background="#FFFFFF" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:scaleType="fitStart" android:src="@drawable/quote_sample_img" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is text" /> </LinearLayout> </LinearLayout> 

这是图像中的wrap_content – 源文件可能太高。

在ImageView中使用它可以在缩放后使图像区域重置为图像的新大小:

 android:adjustViewBounds="true" 

我也会改变ImageView的高度,使其填满屏幕,强制你的酒吧总是在底部:

 android:layout_height="0dip" // faster than match_parent for weight android:layout_weight="1.0" 

我认为这个问题可能是因为你使用的图像大于屏幕,所以ImageView的高度设置为可用空间的高度,以便最适合图像,而不会留下任何空间。

另外,如果你想总能看到底部条,最好使用一个RelativeLayout来代替:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/Main" android:orientation="vertical" > <LinearLayout android:id="@+id/bottom_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" android:layout_alignParentBottom="true" android:orientation="vertical" > <include layout="@layout/browse_bottom_bar" /> </LinearLayout> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/bottom_bar" android:src="@drawable/quote_sample_img" /> </RelativeLayout> 

我有一个非常类似的问题,张贴在https://stackoverflow.com/questions/9765401/imageview-with-adjustviewbounds-seems-to-ignore-following-elements

除非你指定adjustviewbounds =“true”,否则缩放图像后ImageView不会缩小。

但是,从我自己的post中可以看出,这并不是完整的答案:imageview可能仍会将下方的项目从显示屏中移除,或者如果图像太大,我正在努力修复它们,从而侵入到它们的空间中。