2016-10-22 4 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입니다.하지만 재미있는 점은 void 앞에 layout.setBackgroundColor()을 사용하여 색을 설정할 수 있다는 것입니다.

그럼, 어떻게 레이아웃 backgroudColor를 설정합니까?

답변

1

, 당신은 클래스 범위로 이동해야합니다. 좋아요 :

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

또는

당신의 RelativeLayout의이 onCreate() 방법 범위
layout1.setBackgroundColor(Color.parseColor("#000000")); 
관련 문제