2012-04-26 2 views
2

このTableRowをTablelayoutに挿入しました。このTablelayoutは1つのScrollviewに挿入され、このScrollviewはHorizo​​ntalScrollViewに挿入されます。 Horizo​​ntalScrollViewには、背景のイメージも含まれます。問題は、私が正しくスクロールできず、すべてのEditTextを表示できないことです。手伝って頂けますか?Horizo​​ntalScrollViewとScrollviewを正しく設定するにはどうすればよいですか?

FrameLayout frameLayout = new FrameLayout(this); 
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
HorizontalScrollView HSC = new HorizontalScrollView(this); 
HSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER)); 
HSC.setBackgroundResource(R.drawable.lavagna); 
ScrollView VSC = new ScrollView(this); 
VSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
TableLayout tableLayout = new TableLayout(this); 
tableLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
values = new EditText[r][c]; 
for (int i = 0; i < r; i++){   
tableRow = new TableRow(this); 
tableRow.setGravity(Gravity.CENTER); 
for (int j = 0; j < c; j++){ 
values[i][j] = new EditText(this); 
values[i][j].setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL); 
values[i][j].setHint("r: " + (i) + " " + "c: " + (j)); 
values[i][j].setPadding(10, 10, 10, 10); 
tableRow.addView(values[i][j]); 
}   

答えて

1
  1. Gravity.CENTERパラメータを削除するか、スクロールは十分な大きさ、そのコンテンツの中心からスクロールします。そこにはありますが、それを得ることはできません。
  2. 正しい様々なvalues

コード:

FrameLayout frameLayout = new FrameLayout(this); 
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
HorizontalScrollView HSC = new HorizontalScrollView(this); 
HSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER)); 
HSC.setBackgroundResource(R.drawable.lavagna);   
ScrollView VSC = new ScrollView(this); 
VSC.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,    LayoutParams.WRAP_CONTENT)); 
TableLayout tableLayout = new TableLayout(this); 
tableLayout.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT)); 
// you may or may not change here and below 
// values = new EditText[15][15]; 
for (int i = 0; i < 15; i++){   
    TableRow tableRow = new TableRow(this); 
    tableRow.setGravity(Gravity.CENTER); 
    for (int j = 0; j < 15; j++){ 
     EditText value = new EditText(this); 
     value.setInputType(InputType.TYPE_CLASS_NUMBER |  InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL); 
     value.setHint("r: " + (i) + " " + "c: " + (j)); 
     value.setPadding(10, 10, 10, 10); 
     tableRow.addView(value); 
    } 
    tableLayout.addView(tableRow); 
} 
VSC.addView(tableLayout); 
HSC.addView(VSC); 
frameLayout.addView(HSC); 
// ... add frameLayout 
// ... 
} 
+0

私はあなたのアドバイスで自分のコードを編集していると私はみました。今度はスクロールは右に動作しますが、左には水平には動作しません.3行3列のTableRowのようにEditTextの数が少ない場合、TableRowは画面の中央に配置されません。手伝って頂けますか? – bisemanu

+0

1. 'VSC'と' tableLayout'の 'Gravity.CENTER'を削除します。 2. HSCの親の重力をGravity.CENTERに設定できます。 –

+0

私はしましたが、今はTableRowの行数と列数が例えば3の場合15未満です。TableRowは画面中央に表示されません – bisemanu

関連する問題