[Android]Layout中ImageView中圖片的對齊顯示問題

sunbirdwhz發表於2017-06-29

說一下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。

相關文章