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

问题描述 投票:0回答:1

我不知道如何以正确的方式调整自定义视图的大小。我是Android编程的新手,所以请保持冷静!

我已经在自己的xml文件中定义了棋盘qazxsw poi:

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" /> onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法来设置每个de.xyz.ChessField programmaticaly的大小。

我尝试过类似的东西:

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

你能帮助我做正确的方法吗?另一种可能性是从课堂外设置每个I/widthMeasureSpec, heightMeasureSpec: 1073742218, -2147482860 LayoutParam,或者?什么是最好的方法??

谢谢您的帮助!!

P.S。:更新,使用ChessField。为什么没有确切的高度?我怎么计算呢?

MeasureSpec

android android-layout
1个回答
0
投票

使用enter image description here从提供的测量规范中提取高度和宽度。

然后计算这些值的高度和宽度,并使用[MeasureSpec.getSize(int measureSpec)](View.setMeasuredDimension(),int))来设置高度和宽度

© www.soinside.com 2019 - 2024. All rights reserved.