2013-06-02 60 views
1

我已經制作了一個自定義視圖,並且似乎無法從那裏訪問自定義的顏色。我的整個應用程序由以下3個文件getResources()。getColor在自定義視圖中不工作

colors.xml位於在res /的值的文件夾:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="black">#000000</color> 
</resources> 

TestView.java:

public class TestView extends View { 

    Paint background; 
    int viewWidth; 
    int viewHeight; 

    public TestView(Context context){ 
     super(context); 
     background = new Paint(); 
     background.setColor(getResources().getColor(R.color.black)); 
     //find view dimensions 
     viewWidth = getWidth(); 
     viewHeight = getHeight(); 
    } 

    @Override 
    protected void onDraw(Canvas canvas){ 
     super.onDraw(canvas); 
     canvas.drawRect(0,0,viewWidth,viewHeight, background);  
    } 
} 

和MainActivity.java:

public class MainActivity extends Activity { 

    private static final String TAG = "MainActivity"; 
    TestView testView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     testView = new TestView(this); 
     setContentView(testView); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

我所得到的只是一個空白的白色屏幕,它應該是黑色的!我一直試圖弄清楚可能會導致這種情況持續2天左右,不用說我已經嘗試了很多,但沒有奏效。如果有人能幫我解決這個問題,我會很感激。

謝謝!

+0

mispell應該R.colors.black而不是R.color.black –

+0

嘿的還阮。如果我編寫R.colors.black,則不會編譯,而且,xml的名稱是colors.xml。這是我已經嘗試的事情之一,但謝謝你的建議! – Rookatu

+0

gen文件夾是否包含R.colors.black ID? –

回答

0

我只是想通了。問題是我在構造函數中設置了viewWidthviewHeight。當我剛剛撥打getWidth()getHeight()直接在onDraw(Canvas canvas)中工作。我猜這些值直到onDraw方法還沒有被設置,或者至少在構造函數之後。

感謝Hoan Nguyen的幫助!

0

試試這個:

background.setColor(ContextCompat.getColor(context,R.color.black)); 
相關問題