我正试图建立一个国际象棋应用程序,但我无法让电路板正常工作。我已经尝试了一切,以使表行高度与列宽相匹配,这样广场看起来是正方形的,但在不同的屏幕上,它们会出现挤压或拉伸。TableRows高度不会出来
这里是我的XML代码:
<TableLayout
android:id="@+id/chessboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background" >
<!-- LINE 8 -->
<TableRow
android:id="@+id/line_8"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="30dp" >
<!-- NOTATION LINE 8 LEFT -->
<TextView
android:id="@+id/notation_8_left"
android:layout_width="35dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center|right"
android:paddingRight="3dp"
android:text="8"
android:textColor="#FEFEFE" />
<!-- CELLS -->
<ImageButton
android:id="@+id/a8"
android:background="#fe9"
android:onClick="moveClickHandler" android:layout_weight="1" android:layout_height="fill_parent" android:layout_width="35dp"
android:scaleType="fitXY"
android:src="@drawable/brook"
android:tag="br" />
<ImageButton
android:id="@+id/b8"
android:layout_width="35dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#fb3"
android:onClick="moveClickHandler"
android:scaleType="fitXY"
android:src="@drawable/bknight"
android:tag="bn" />
<ImageButton
android:id="@+id/c8"
android:background="#fe9"
android:onClick="moveClickHandler" android:layout_weight="1" android:layout_height="fill_parent" android:layout_width="35dp"
android:scaleType="fitXY"
android:src="@drawable/bbishop"
android:tag="bb" />
<ImageButton
android:id="@+id/d8"
android:background="#fb3"
android:onClick="moveClickHandler" android:layout_weight="1" android:layout_height="fill_parent" android:layout_width="35dp"
android:scaleType="fitXY"
android:src="@drawable/bqueen"
android:tag="bq" />
...
</TableRow>
这里是我的阅读屏幕宽度,并设置相应的行高度计划性的尝试:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
squareWidth = size.x/10;
LayoutParams params = new LayoutParams(TableRow.LayoutParams.MATCH_PARENT, squareWidth);
TableRow rank8 = (TableRow) findViewById(R.id.line_8);rank8.setLayoutParams(params);
TableRow rank7 = (TableRow) findViewById(R.id.line_7);rank7.setLayoutParams(params);
TableRow rank6 = (TableRow) findViewById(R.id.line_6);rank6.setLayoutParams(params);
TableRow rank5 = (TableRow) findViewById(R.id.line_5);rank5.setLayoutParams(params);
TableRow rank4 = (TableRow) findViewById(R.id.line_4);rank4.setLayoutParams(params);
TableRow rank3 = (TableRow) findViewById(R.id.line_3);rank3.setLayoutParams(params);
TableRow rank2 = (TableRow) findViewById(R.id.line_2);rank2.setLayoutParams(params);
TableRow rank1 = (TableRow) findViewById(R.id.line_1);rank1.setLayoutParams(params);
当我出打印的值高度和“squareWidth”,我得到“squareWidth为160”,但“行高为90”或“squareWidth为35,行高为68”。所以感觉Android只是在弥补它想要的任何价值。我如何强制这些行成为正确的高度?
我怀疑大多数国际象棋应用程序首先不会使用“TableLayout”,而是使用2D Canvas图形API并简单地绘制所需的电路板。 – CommonsWare
我应该从别的东西开始,但我已经走到了这么远,我担心重新开始为时已晚。一切正常,并准备好去除这个问题!那么,我怎样才能强制这些行成为一个给定的高度,每一次都不会失败?我有错误的参数或什么? – user3571043