2016-10-22 3 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

はあなたの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")); 
関連する問題