阻止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 (对不起,没有足够的声望发布的实际图片)

  • Android:ImageView getID(); 返回整数
  • 在RelativeLayout中使用ImageView重复图像
  • 如何从url为imageView设置图像
  • RecyclerView中图像的奇怪行为
  • 如何在Android上的ImageView中绘制一条线?
  • ImageView中透明的图像部分变为黑色
  • 从Android L中的ImageView获取位图
  • 从Picasso加载的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可能仍会将下方的项目从显示屏中移除,或者如果图像太大,我正在努力修复它们,从而侵入到它们的空间中。