When the screen is too small to contain all the layout elements at their natural size (say, for example, when a smaller screen goes to landscape mode) I notice that it looks like Android first conceals TextViews, and then shrinks images until they fit. That’s my impression, maybe I’m not completely correct. My question is this: is it possible to make it resize images first? That way, the text would still be visible, even if the images need to be made quite small.
Here is one of many examples. The scaleType is irrelevant. From my observations, if Android doesn’t have enough room on the screen and needs to decide whether to shrink an image or to crop/hide text… the text will be hurt first.
<?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" >
<ImageView
android:src="@drawable/large_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
Here try this:
That’ll get your textview to wrap_content ie not shrink and the ImageView to take up the remaining space, therefore if it starts getting squashed it’ll be the ImageView that is squished down.
If your worried about it getting too big, set a
android:maxHeight="200dip"or something similar