Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置RelativeLayout背景色?_Java_Android_Android Layout - Fatal编程技术网

Java 如何设置RelativeLayout背景色?

Java 如何设置RelativeLayout背景色?,java,android,android-layout,Java,Android,Android Layout,我试图设置一个相对的背景色,但我无法解析符号 这是我的密码 package com.example.butka.clickme; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.suppor

我试图设置一个相对的背景色,但我无法解析符号

这是我的密码

package com.example.butka.clickme;

import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

import java.util.Random;

public class MainActivity extends AppCompatActivity
{  

     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
         //set layout
         super.onCreate(savedInstanceState);
         RelativeLayout layout1 = new RelativeLayout(this);
         layout1.setBackgroundColor(Color.BLACK);

        //LayoutParameters
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
              RelativeLayout.LayoutParams.WRAP_CONTENT,
              RelativeLayout.LayoutParams.WRAP_CONTENT
        );

         params.addRule(RelativeLayout.CENTER_HORIZONTAL);
         params.addRule(RelativeLayout.CENTER_VERTICAL);

         //button
         Button btn = new Button(this);
         btn.setText("Click me");
         btn.setBackgroundColor(Color.WHITE);
         btn.setOnClickListener(new View.OnClickListener()
         {
             public void onClick(View v)
             {
                 colors();
             }
         });

          //add stuff
          layout1.addView(btn, params);
         setContentView(layout1);

     }

    //void on button click
    private void colors()
    {
        Random random = new Random();
        short num1 = (short)random.nextInt(9);

        if(num1 == 0)
        {
             layout1.setBackgroundColor(Color.BLACK);

        }

     }

 }
一切正常,直到
颜色无效。错误是
无法解析符号
,但有趣的是,我可以使用
layout.setBackgroundColor()
在空白之前设置颜色

所以问题是,如何设置布局背景颜色?

使用以下方法:

layout1.setBackgroundColor(ContextCompat.getColor(this, R.color.black)); 


您的RelativeLayout位于
onCreate()
方法作用域中,必须将其移动到类作用域。像这样:

public class MainActivity extends AppCompatActivity {  
  RelativeLayout layout1;  // Make it class scope.

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    //set layout
    super.onCreate(savedInstanceState);
    RelativeLayout layout1 = new RelativeLayout(this);
    layout1.setBackgroundColor(Color.BLACK);
    ...
  }

  // Then you can access it from other method:
  private void colors() {
    Random random = new Random();
    short num1 = (short)random.nextInt(9);

    if(num1 == 0) {
       layout1.setBackgroundColor(Color.BLACK); // You can access it now.
    }
  }
public class MainActivity extends AppCompatActivity {  
  RelativeLayout layout1;  // Make it class scope.

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    //set layout
    super.onCreate(savedInstanceState);
    RelativeLayout layout1 = new RelativeLayout(this);
    layout1.setBackgroundColor(Color.BLACK);
    ...
  }

  // Then you can access it from other method:
  private void colors() {
    Random random = new Random();
    short num1 = (short)random.nextInt(9);

    if(num1 == 0) {
       layout1.setBackgroundColor(Color.BLACK); // You can access it now.
    }
  }