2013-08-21 98 views
0

如何將LinearLayout的背景設置爲特定圖像(從Internet獲取),而不拉伸圖像?以編程方式設置LinearLayout的背景是拉伸圖像

基本上我有下面的代碼段,其氨基酸位圖轉換成BitmapDrawable,這反過來又允許我編程方式設置的LinearLayout的背景:

BitmapDrawable myBackground = new BitmapDrawable(myBitmap); 
myLinearLayout.setBackgroundDrawable(myBackground); 

的問題是,圖像一直延伸到匹配LinearLayout的高度和寬度;它不像水平和垂直居中,就好像我將背景設置爲XML佈局中的drawable一樣。我怎樣才能實現這從我的位圖,從互聯網檢索?

+0

儘量不要更改背景圖層,並將其用於'ImageView'。如何設置圖像的大小:'image_view.getLayoutParams()。height = 50;','image_view.getLayoutParams()。width = 50;' –

回答

-1

這是因爲backgroundDrawable無權更改佈局父佈局的參數。

你有2個選擇:

1 -

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 
<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="center" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
</LinearLayout> 
</FrameLayout> 

2 - 用你的雙手

BitmapDrawable myBackground = new BitmapDrawable(myBitmap); 
LayoutParams lp = myLinearLayout.getLayoutParams(); 
lp.width = myBitmap.getWidth(); 
lp.height = myBitmap.getHeight(); 
myLinearLayout.setlayoutParams(lp) 
myLinearLayout.setBackgroundDrawable(myBackground); 

,你應該重寫的onDraw(帆布C)BitmapDrawable的方法的LinearLayout中的setSize,現在它看起來像:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/graphics/drawable/BitmapDrawable.java#BitmapDrawable.draw%28android.graphics.Canvas%29

+0

第二種選擇是改變佈局大小,你不能通過改變別的我想。 – webmaster