在Java中设置背景图片

4

基本上,我有一个XML文件,我想要重复使用。内容大致相同,只是背景不同,还有一些调整.. 我该如何处理呢?我已经尝试了 View.setBackGroundDrawable(R.drawable.sample); 但它不起作用。我的应用程序崩溃了。我已经把我的图片放在 drawable 文件夹中的一个里面。


2
从崩溃中得到了哪些错误信息? - Don
Instrumentation.callActivityOnCreate(Instrumentation... .java:1053) - Becky Reyna
你能把你的logcat中的堆栈跟踪粘贴一下吗? - Robin Chander
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygo ... .java:993) ŤŅôÁúčŤĶ∑śĚ•ŚģĆŚÖ®ťôĆÁĒü„Äā - Becky Reyna
@Sahara:这是什么视图?是图片视图、按钮等吗? - Ashwin
@Sahara:它是一个线性布局吗?如果是的话,omi0301提供的代码应该可以工作。 - Ashwin
1个回答

9
您可以在xml中为布局分配一个id,这样在java代码中,您可以为其设置不同的布局。以下是示例:
 //assuming your Layout is named linearlayout1:
 LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout1);
 ll.setBackgroundResource(R.drawable.sample);

在设置背景之前,您还可以创建if语句,例如:

LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout1);
if( yourifstatement) {
ll.setBackgroundResource(R.drawable.sample);
}

如果它是RelativeLayout布局,则相同的代码适用,只需将LinearLayout更改为RelativeLayout。
如果这不是问题,请发布您的LogCat。

你能解释一下LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout1); 为什么是R.id..而不是R.layout吗? - Becky Reyna
因为你正在给你的活动命名你的LinearLayout。你还没有设置内容(用于XML。LinearLayout只是XML的一部分)。你正在通过ll.setBackgroundResource(R.drawable.sample)来设置布局的背景。 - omi0301
@Sahara - 而且,你的LinearLayout只是你想要重用的xml的一部分。 - omi0301
我不明白为什么要创建一个新的布局?我已经有一个XML文件,但是我的XML没有背景图片,我想在Java类中设置图片,这样我就可以通过在其他Java类中使用不同的背景图片来重用相同的XML,但是保持相同的XML。 - Becky Reyna
@Sahara - 上面的答案只展示了如何为一个可以在不同活动中使用的xml设置图像背景。它并不是用来创建新布局的。 - omi0301

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接