テーブルに追加したいSquareというカスタムビューがあります。正方形をテキストビューに置き換えると、完全に機能します。
オンラインでかなり検索したところ、コンストラクターで setWillNotDraw(false) を呼び出す必要があることがわかりました。私はこれをしても結果はありませんでした。
ここに私のクラススクエアがあります:
public class Square extends View
{
private String courseName;
private String className;
private String place;
private Weekdays weekday;
private int hour;
private Paint paint;
public Square(Context context, AttributeSet attrs){
super(context,attrs);
setWillNotDraw(false);
}
public Square(Context context, String courseName, String className, String place, Weekdays weekday, int hour)
{
super(context);
this.courseName = courseName;
this.className = className;
this.place = place;
this.weekday = weekday;
this.hour = hour;
setWillNotDraw(false);
paint = new Paint();
}
public Square(Context context,Weekdays weekdays, int i) {
super(context);
this.weekday = weekdays;
this.hour = i;
setWillNotDraw(false);
paint = new Paint();
paint.setColor(Color.BLACK);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawText("Hello I'm a test", 1, 30, paint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
onMeasure() メソッドを 10,10 などを使用するように設定しようとしましたが、何も表示されません。これが私の問題に関連しているかどうかはわかりません。
テーブルは次のように動的に作成されます。
public class MainActivity extends Activity {
private Controller controller;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
controller = new Controller(this);
createTable();
}
private void createTable() {
// get a reference for the TableLayout
TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);
/**Create 8 rows*/
for(int i=0;i<Controller.TABLE_ROW_COUNT;i++){
// create a new TableRow
TableRow row = new TableRow(this);
/** create 5 columns*/
for(int j=0;j<Controller.TABLE_COLUMN_COUNT;j++){
Square sq = controller.tableModel.getSquare(Weekdays.values()[j], i);
row.addView(sq, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
// add the TableRow to the TableLayout
table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
}
ありがとう!