在Android中调整自定义视图大小的问题

时间:2018-03-02 16:46:55

标签: android android-layout

我不知道如何以正确的方式调整自定义视图的大小。我是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 更新。为什么没有确切的高度?我怎么计算呢?

enter image description here

1 个答案:

答案 0 :(得分:0)

使用MeasureSpec.getSize(int measureSpec)从提供的度量规范中提取高度和宽度。

然后计算这些值的高度和宽度,并使用[View.setMeasuredDimension()](https://developer.android.com/reference/android/view/View.html#setMeasuredDimension(int,int))来设置高度和宽度