Android:如何将背景图像添加到GridLayout?

时间:2014-04-14 06:52:38

标签: android view hierarchy

我有一个GridLayout充满了按钮 -​​ 类似于按钮之间的空格计算。我想为背景设置皮肤,包括按钮之间的那些区域,而不是按钮本身。

最好的方法是什么?有没有在GridLayout上设置背景图像的方法,还是需要创建View层次结构?

我开始尝试将子视图添加到父视图中,但看起来您只能将视图添加到ViewGroup派生类中?

没有背景,我正在动态构建我的GridLayout并使用setContentView(gridLayout)将其添加到活动的默认布局。

我该怎么做呢?

编辑:我真正想要了解的是如何构建复杂的视图层次结构。似乎gridLayout.setBackground()的简单方法需要API 16,我也在为我的设备使用API​​ 14.

3 个答案:

答案 0 :(得分:2)

GridView派生自View类。 View类有一个名为 void setBackgroundResource ()的方法,您可以在网格视图对象上调用它,将可绘制资源的id传递给它。此方法是从API级别1开始引入的,因此您不必担心API兼容性问题。

答案 1 :(得分:1)

有一件事让网格视图坚持 LinearLayout ,并将您想要的图像设置为该LinearLayout的背景。

将LinearLayout变为父视图和Gridview视为子视图。 就像那样

Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.image1);
LinearLayout.setBackgroundDrawable(new BitmapDrawable(bitmap));

答案 2 :(得分:0)

您可以像这样轻松地将背景图像添加到GridLayout:

A)gridLayout.setBackgroundResource(R.drawable.background_image);

B) 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,但这些布局非常相似,所以这不是什么大问题。)