以编程方式更改布局的布局颜色

16

我正在尝试以编程方式更改相对布局的布局颜色(尝试了线性布局但未更改),但无法更改。

同时尝试调试应用程序也没有帮助,没有与我的标签相关的消息。

在布局被初始化后,应用程序停滞不前。

package com.test.intentdemo;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
//import android.os.SystemClock;
import android.widget.RelativeLayout;
import android.util.*;
import java.lang.Thread;

public class intentDemo extends Activity {
    /** Called when the activity is first created. */
    RelativeLayout lLayout;
    public static final String TAG="MyActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lLayout = (RelativeLayout) findViewById(R.layout.main);
        if (Log.isLoggable(TAG,0))
        {
            Log.e(TAG,"ERROR BEFORE");
            Log.i(TAG,"INFO BEFORE");
            Log.d(TAG,"DEBUG BEFORE");

            lLayout.setBackgroundColor(Color.parseColor("#000000"));
            //SystemClock.sleep(2000);
            try
            {
                Thread.currentThread();
                Thread.sleep(2000);
            }
            catch (Exception e)
            {
                //e.message();
            }

            Log.e(TAG,"ERROR AFTER");
            Log.i(TAG,"INFO AFTER");
            Log.d(TAG,"DEBUG AFTER");
        }
    }
}
3个回答

25
lLayout = (RelativeLayout) findViewById(R.layout.main);

这是错误的。 findViewById 需要一个 View 的 id。因此,给 RelativeLayout 分配一个 ID,例如:

<RelativeLayout
    android:id="@+id/the_id"

那么:

lLayout = (RelativeLayout) findViewById(R.id.the_id);

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.RelativeLayout;

public class intentDemo extends Activity {
    public static final String TAG="MyActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        RelativeLayout lLayout = (RelativeLayout) findViewById(R.layout.the_id);
        lLayout.setBackgroundColor(Color.parseColor("#000000"));
    }
}

@Cristian:感谢您指出错误,问题仍然存在。您还能推荐其它什么吗?谢谢,Sid。 - Sid
为了确保……我在上面添加了一段代码……你能测试一下并告诉我它是否有效吗? - Cristian
1
也许是if语句阻止了你的进展?如果是这样,试着看看为什么会发生这种情况。但既然那不是你的问题...你问的是如何改变背景颜色,现在你知道该怎么做了,对吧? - Cristian
是的,但我想知道如何在特定条件下更改布局的颜色。我去掉了“if”语句并且它可以工作,但我的真正问题是在类似于if或for的条件下更改布局。否则,整个目的就失去了意义。我希望我已经能够清楚地解释我的情况。谢谢。 - Sid
1
没问题。这里的问题在于你问了一个关于如何改变布局颜色的问题,当然现在你已经知道如何做了。如果它没有按照你的预期工作,那是因为条件的原因;但条件本身与问题无关。你的条件有 isLoggable 方法…… 你看过文档了吗?你现在的问题不同了:你想知道如何让那个 if 语句执行。再次强调,这与最初的问题无关。 - Cristian

18
RelativeLayout lLayout = (RelativeLayout) findViewById(R.layout.the_id);       
lLayout.setBackgroundColor(getResources().getColor(R.color.green_color));

1
如果你想进行颜色编码 - 让我们来做。
your_layout_name.setBackgroundColor(Color.parseColor("Color Name"));

例子:

linearLayoutInquiryYear.setBackgroundColor(Color.parseColor("#e3e3e3"));

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