2012-04-26 104 views
2

我把这个TableRow的EditText插入到tablelayout中,这个tablelayout被插入到一个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

我已经编辑我的代码以您的意见,我试过。现在滚动向右移动,但不向左移动,并且如果EditText的数量较小(如3行3列的TableRow),则TableRow不在屏幕中央。你可以帮我吗? – bisemanu 2012-04-26 13:17:57

+0

1.删除'VSC'和'tableLayout'的'Gravity.CENTER'。 2.您可以将'HSC'的父亲的重力设置为'Gravity.CENTER'。 – 2012-04-26 13:30:47

+0

我做过了,但现在如果TableRow的行数和列数小于15(例如3),TableRow不在屏幕上居中 – bisemanu 2012-04-26 13:33:50

相关问题