2016-10-22 11 views
1

Я пытаюсь установить RelativeLayout BackgroundColor и я не могу разрешить символуКак установить цвет фона RelativeLayout?

вот мой код

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); 

     } 

    } 

} 

все не работает хорошо, пока color пустоте. ошибка cannot resolve symbol Но интересно то, что я могу установить цвет, используя layout.setBackgroundColor() перед void.

Итак, вопрос в том, как вы устанавливаете макет backgroudColor?

ответ

1

Ваш 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. 
    } 
    } 
1

Используйте это:

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

или

layout1.setBackgroundColor(Color.parseColor("#000000")); 
Смежные вопросы