我不知道如何以正确的方式调整自定义视图的大小。我是Android编程的新手,所以请保持冷静!
我已经在自己的xml文件<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
中定义了棋盘:
board.xml
然后我确定了一个布局,其中董事会被粘贴为<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/BoardLayout"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center">
<TableRow>
<de.xyz.ChessField android:id="@+id/A8" />
<de.xyz.ChessField android:id="@+id/B8" />
....
:
fragment
现在,我想实现<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteY="81dp">
<fragment
android:id="@+id/fragmentBoard"
android:name="de.xyz.BoardFragment"
android:layout_width="300dp"
android:layout_height="00dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
的{{1}}方法来设置每个onMeasure(int widthMeasureSpec, int heightMeasureSpec)
programmaticaly的大小。
我尝试过这样的事情:
de.xyz.ChessField
但Field
值非常奇怪:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Log.i("widthMeasureSpec, heightMeasureSpec", String.valueOf(widthMeasureSpec) + ", " + String.valueOf(heightMeasureSpec));
setMeasuredDimension(widthMeasureSpec / 8, heightMeasureSpec / 8);
}
或
MeasureSpec
你能帮助我做正确的方法吗?
另一种可能性是从课堂外设置每个I/widthMeasureSpec, heightMeasureSpec: 788, 788
的{{1}},或者?什么是最好的方式??
感谢您的帮助!!
P.S。:使用I/widthMeasureSpec, heightMeasureSpec: 1073742218, -2147482860
更新。为什么没有确切的高度?我怎么计算呢?
答案 0 :(得分:0)
使用MeasureSpec.getSize(int measureSpec
)从提供的度量规范中提取高度和宽度。
然后计算这些值的高度和宽度,并使用[View.setMeasuredDimension()
](https://developer.android.com/reference/android/view/View.html#setMeasuredDimension(int,int))来设置高度和宽度