Android 键盘是否会触发某种触发?我的表格布局仅在键盘显示时更新
我正在开发一个Android应用程序。这个应用程序是关于一个象棋游戏的。用户可以通过AlertDialog.Builder输入棋盘的宽度和高度。奇怪的是:当点击OK按钮时,键盘仍在显示,棋盘正在完美地更新。但在键盘未显示时单击OK时,棋盘不会更新。棋盘是一种桌面布局。行是以编程方式创建的。我将用图片演示这个问题: 这是AlertDialog.Builder,不显示键盘: 结果是TableLayout没有显示任何内容: 这是显示键盘的AlertDialog.Builder: 现在,桌面布局正完美地显示出来: 这是自定义tablerow类:Android 键盘是否会触发某种触发?我的表格布局仅在键盘显示时更新,android,keyboard,tablelayout,Android,Keyboard,Tablelayout,我正在开发一个Android应用程序。这个应用程序是关于一个象棋游戏的。用户可以通过AlertDialog.Builder输入棋盘的宽度和高度。奇怪的是:当点击OK按钮时,键盘仍在显示,棋盘正在完美地更新。但在键盘未显示时单击OK时,棋盘不会更新。棋盘是一种桌面布局。行是以编程方式创建的。我将用图片演示这个问题: 这是AlertDialog.Builder,不显示键盘: 结果是TableLayout没有显示任何内容: 这是显示键盘的AlertDialog.Builder: 现在,桌面布局正
public class TableRowChess extends TableRow {
private Context context;
private int numberOfColumns;
private int rowNumber;
private String[][] solution;
public TableRowChess(Context context, int numberOfColumns, int rowNumber, String[][] solution) {
super(context);
this.context = context;
this.numberOfColumns = numberOfColumns;
this.rowNumber = rowNumber;
this.solution = solution;
initializeTableRow();
initializeTextViews();
}
private void initializeTableRow(){
this.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) numberOfColumns));
}
private void initializeTextViews(){
TableRow.LayoutParams params = new TableRow.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f);
for(int i = 0; i < numberOfColumns; i ++){
SquareTextView tv = new SquareTextView(context);
tv.setLayoutParams(params);
tv.setGravity(Gravity.CENTER);
tv.setBackgroundResource(getCorrectBackground(i));
tv.setHeight(tv.getLayoutParams().width);
tv.setText(solution[rowNumber][i]);
tv.setTextAppearance(context, android.R.style.TextAppearance_Medium);
tv.setTypeface(null, Typeface.BOLD);
this.addView(tv);
}
}
private int getCorrectBackground(int columnNumber){
if((rowNumber % 2) == 0){
if((columnNumber % 2) == 0){
return R.drawable.square_white;
} else {
return R.drawable.square_brown;
}
} else {
if((columnNumber % 2) == 0){
return R.drawable.square_brown;
} else {
return R.drawable.square_white;
}
}
}
}
公共类TableRowChess扩展了TableRow{
私人语境;
私有整数列;
私有整数行数;
私有字符串[][]解决方案;
公共TableRowChess(上下文上下文、int-numberOfColumns、int-rowNumber、字符串[][]解决方案){
超级(上下文);
this.context=上下文;
this.numberOfColumns=numberOfColumns;
this.rowNumber=rowNumber;
这个解决方案=解决方案;
initializeTableRow();
initializeTextViews();
}
private void initializeTableRow(){
this.setLayoutParams(新的TableRow.LayoutParams(LayoutParams.MATCH_父项,LayoutParams.MATCH_父项,(float)numberOfColumns));
}
私有void initializeTextViews(){
TableRow.LayoutParams params=新建TableRow.LayoutParams(0,ViewGroup.LayoutParams.WRAP_内容,1.0f);
for(int i=0;i
这是单击“确定”按钮时调用的代码:
private void setupChessBoard(){
tableLayout.removeAllViews();
String[][] solution = new Algorithm(dimensionsDialog.getHeight(), dimensionsDialog.getWidth(), dimensionsDialog.getNumberOfQueens(), dimensionsDialog.getNumberOfBishops()).getSolution();
for(int i = 0 ; i < dimensionsDialog.getHeight(); i ++){
tableLayout.addView(new TableRowChess(this, dimensionsDialog.getWidth(), i, solution));
}
}
私人棋盘(){
tableLayout.removeallview();
字符串[][]解=新算法(dimensionsDialog.getHeight()、dimensionsDialog.getWidth()、dimensionsDialog.getNumberOfQueens()、dimensionsDialog.getNumberOfBishops()).getSolution();
对于(int i=0;i
我不明白为什么当键盘显示时代码可以工作,为什么当它不显示时代码不能工作。我看不到这里的关系?还是代码中有什么错误
我希望有人能帮助我!谢谢