说一下ImageView中经常遇到的图片对齐问题:
上面图片中布局实现的代码:
<LinearLayout
android:id="@+id/search_box_region"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/searchbox_bg"
android:layout_alignParentTop="true"
>
<ImageView
android:id="@+id/image1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:background="#CCCCEE"
android:src="@drawable/searchbox_icon" />
<EditText
android:id="@+id/edittext1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textWebEditText"
android:imeOptions="actionSearch"
android:scrollHorizontally="true"
android:singleLine="true"
android:background="#CCEECC"
android:gravity="center_vertical"/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:textAlignment="center"
android:text="@string/cancel"
android:background="#CCCCEE"/>
</LinearLayout>
图中三个控件平分LinearLayout的宽度,默认情况下ImageView中的图片是居中显示的,如果想要图片靠右显示,需要设置ImageView的ImageView属性:
android:scaleType="fitEnd"
或者在代码中调用:image1.setScaleType(ImageView.ScaleType.FIT_END);
效果如下:
各参数解释:
CENTER: 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示;
CENTER_CROP:按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽);
CENTER_INSIDE:将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽;
FIT_CENTER:把图片按比例扩大/缩小到View的宽度,居中显示;
FIT_START/FIT_END:在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于开始位置,FIT_CENTER居中,FIT_END置于结束位置;
FIT_XY:不按比例缩放图片,目标是把图片塞满整个View。