質問が十分に有益でない場合は申し訳ありません。私はICS用のアプリをコーディングしています。TableLayout を使用して、ユーザーがクリックするグリッドを作成することにしました。行ごとに、いくつかの TextView と、それらの 2 つの間に 1 dp の垂直境界線の ImageView を配置し、すべてプログラムでループで実行しました。ここで、各 TextView をクリック可能にしました。クリックすると、背景が青色のドローアブルに変わります。ただし、ドローアブルが「グリッド」全体を水平方向に埋めていないことがわかります。ImageView はおそらく必要以上のスペース (1 dp) を占有していると思います。私は TextViews を拡張する多くの方法を思いついたり見つけたりしましたが、どちらもうまくいきませんでした。何か案は?前もって感謝します!
編集:ここに私が使用しているループがあります-私はそれが少し複雑であることを知っているので、投稿しませんでした:
for(int i=0; i<5; i++){
tr = new TableRow(ctxt);
tr.setGravity(Gravity.CENTER);
for(int j=0; j<6; j++){ //add the text from an array
tv = new TextView(ctxt);
tv.setText(a[6*i+j]:null);
tv.setTextSize(16);
tv.setPadding(0, 4, 0, 4);
tv.setGravity(Gravity.CENTER);
tv.setClickable(true);
tv.setBackgroundResource(R.drawable.list_selector_background);
tv.setTag(39+6*i+j);
tv.setOnClickListener(this);
tr.addView(tv, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 2.0f));
if(j<5){ //set the border
border = new ImageView(ctxt);
border.setImageResource(R.drawable.vert_border);
tr.addView(border, new LayoutParams(0, LayoutParams.MATCH_PARENT, 0.0f));
}
}
tl2.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, 48));
if(i<4){ //horizontal border
tr = new TableRow(ctxt);
tr.setMinimumHeight(1);
tr.setBackgroundColor(color.bg_gray);
tl2.addView(tr);
}
}