簡體   English   中英

Android:如何將背景圖像添加到GridLayout?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM