2015-10-31 87 views
0

我使用myLinearLayout.setBackgroundResource(R.drawable.my_drawable)設置LinearLayout的背景。有什麼方法可以在使用此方法時保持源圖像的縱橫比(在必要時縮放以適合),而不是讓圖像伸展以適合LinearLayout使用LinearLayout.setBackgroundResource()保持縱橫比()

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/background_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    ... 

</LinearLayout> 

的java文件:

backgroundLayout.setBackgroundResource(R.drawable.my_drawable); 

回答

2

當我必須設置佈局的背景(允許其命名爲Layout_A),我使用的RelativeLayout作爲家長和裏面我把2項:

  • 與scaletype設置的ImageView到centercrop
  • Layout_A

XML配置將是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/background" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" 
     android:src="@drawable/background"/> 

    <Layout_A> 

     ... 

    </Layout_A> 

</RelativeLayout> 

而且你需要更改代碼的背景是:

ImageView ivBackground = (ImageView) rootView.findViewById(R.id.background); 
ivBackground.setImageDrawable(getResources().getDrawable(R.drawable.my_drawable)); 

或:

ImageView ivBackground = (ImageView) rootView.findViewById(R.id.background); 
ivBackground.setImageResource(R.drawable.my_drawable); 
+0

我用這個答案,但是對於根元素:http:// stackov用'FrameLayout'而不是'RelativeLayout' erflow.com/q/22875453/1438339。在實踐中,可能沒有什麼區別,或者我應該想象得很好。 –