以编程方式创建基于Sudoku网格的EditTexts

时间:2013-12-19 22:02:14

标签: android android-edittext

我将一个数独网格图像加载到我的应用程序中,但是我在使每个方块中出现EditTexts时遇到了很多麻烦。当我运行应用程序时,EditTexts中的数字几乎不可见。我试过改变背景颜色和文字颜色,没有任何改变。

/* PROGRAMATICALLY ADD EDITVIEWS via waiting for draw */
layout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() 
{

    public void onGlobalLayout() 
    {
        layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        /* not used yet
        int height = grid.getMeasuredHeight();
        int width = grid.getMeasuredWidth();
        int top = grid.getTop();
        //int bottom = grid.getBottom();
        int left = grid.getLeft();

        int square_height = height/9;
        int square_width = width/9;*/

         for ( int r = 0; r < 9; r++ )
         {
             for ( int c = 0; c < 9; c++ )
             {  
                 text_boxes[r][c] = new EditText(getApplicationContext());
                 text_boxes[r][c].setId(r+c);
                 text_boxes[r][c].setText("1");
                 text_boxes[r][c].setInputType(InputType.TYPE_CLASS_NUMBER);
                 text_boxes[r][c].setFilters(new InputFilter[] {new InputFilter.LengthFilter(1)});
                 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

                 params.setMargins(c*10, r*50, 0, 0);
                 layout.addView(text_boxes[r][c], params);
                 text_boxes[r][c].setBackgroundColor(0x0FF00);
             }
         }
    }
});

1 个答案:

答案 0 :(得分:0)

你完成使用后没有删除监听器,所以它可以继续被调用。

另外,关于EditText的颜色,只需更改EditTexts的背景,或使用为EditTexts设置默认背景的全局样式,即可将其更改为您想要的任何颜色。你甚至可以使用this tool