[英]Android: How I can I add a background image to a GridLayout?
我有一個充滿按鈕的GridLayout-類似於按鈕之間有空格的計算。 我想為背景蒙皮,包括按鈕之間的那些區域,而不是按鈕本身。
做這個的最好方式是什么? 是否可以在GridLayout本身上設置背景圖像,還是需要創建View層次結構?
我已經開始嘗試考慮可以將子視圖添加到父視圖,但是似乎只能將視圖添加到ViewGroup派生類?
沒有背景,我正在動態構造GridLayout,並使用setContentView(gridLayout)將其添加到活動的默認布局中。
請問我該怎么做?
編輯:我真正想了解的是如何組成復雜的視圖層次結構。 它也似乎是gridLayout.setBackground()的簡單方法,需要API 16,並且我也在我的設備上使用API 14。
GridView派生自View類。 View類有一個稱為void setBackgroundResource()的方法,您可以在網格視圖對象上調用它,並將可繪制資源的ID傳遞給它。 此方法是從API級別1開始引入的,因此您不必擔心API兼容性問題。
做一件事,保持網格視圖獨立於LinearLayout ,然后將所需圖像設置為該LinearLayout的背景。
因此,您的LinearLayout成為父視圖,而Gridview作為子視圖。 就這樣
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.image1);
LinearLayout.setBackgroundDrawable(new BitmapDrawable(bitmap));
您可以像這樣輕松地將背景圖像添加到GridLayout中:
A) gridLayout.setBackgroundResource(R.drawable.background_image);
B) Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.background_image); gridLayout.setBackground(drawable);
Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.background_image); gridLayout.setBackground(drawable);
但是請注意,我發現當OTA從Android 6.0升級到7.1.1(Galaxy J5(2016))時,GridLayout自API 24開始不支持顯示背景可繪制對象。(以上代碼似乎都無法正常工作高於API 23,甚至在Android Emulator映像上也是如此)
但是,即使在API 24+上,TableLayout的背景圖像也可以正確顯示。
(因此,我不得不將所有相關代碼從GridLayout重寫為TableLayout,但是這些布局非常相似,因此沒有太大問題。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.