使用支持可访问性的大字体测量Android视图

使用支持可访问性的大字体测量Android视图,android,fonts,accessibility,Android,Fonts,Accessibility,我有一些代码需要知道视图的大小。所有正常字体都可以正常使用,但是当手机在辅助功能选项中选择了“大字体”时,似乎会出现问题。从我所能收集到的信息来看,视图的高度返回相同的值,忽略较大的字体 复杂性来自这样一个事实,即我在测量视图时将可见性设置为view.GONE。这是我当前的代码: v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMea

我有一些代码需要知道视图的大小。所有正常字体都可以正常使用,但是当手机在辅助功能选项中选择了“大字体”时,似乎会出现问题。从我所能收集到的信息来看,视图的高度返回相同的值,忽略较大的字体

复杂性来自这样一个事实,即我在测量视图时将可见性设置为view.GONE。这是我当前的代码:

v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
final int targetHeight = v.getMeasuredHeight(); 
我的一个想法是检测是否启用了大字体,并相应地调整测量的高度,但这似乎是一个相当笨拙的解决方案。也许以前有人解决过这个问题

编辑:

这是导致问题的布局-全部以XML声明:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/signup_prompt_wrapper"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:orientation="vertical"
    android:paddingRight="@dimen/signup_drawer_inner_padding"
    android:paddingTop="@dimen/signup_drawer_inner_padding"
    android:background="@color/signup_prompt_color">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/signup_prompt_image_wrapper"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/signup_drawer_image_height"
            android:layout_gravity="center_vertical">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_report_white_24dp" />
        </LinearLayout>

        <TextView
            android:id="@+id/signup_prompt_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:textColor="@color/white"
            android:paddingLeft="@dimen/signup_drawer_inner_padding" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal">

        <Button
            android:id="@+id/signup_prompt_dismiss"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:visibility="invisible"
            android:textColor="@color/white"
            android:text="DISMISS" />

        <Button
            android:id="@+id/signup_prompt_signup"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:textColor="@color/white"
            android:text="SIGN IN" />
    </LinearLayout>

</LinearLayout>


构建视图或设置文本外观(如果在运行时应用文本外观)时,将解析文本大小和缩放比例。视图不太可能根据未缩放的文本大小来测量自身——除非它被指定为
dp
(未缩放),而不是
sp
。你测量的是什么类型的视图?它是如何创建的?我没有指定大小-只有样式
“?android:attr/borderlessButtonStyle”
。视图是一个线性布局,包含图像、文本和两个按钮。我将用布局详细信息更新问题。如果测量视图何时可见,行为是否会改变?不,无论可见性如何,测量结果都是一样的。文本大小和比例在构建视图时解决,或者在运行时应用文本外观时设置文本外观时解决。视图不太可能根据未缩放的文本大小来测量自身——除非它被指定为
dp
(未缩放),而不是
sp
。你测量的是什么类型的视图?它是如何创建的?我没有指定大小-只有样式
“?android:attr/borderlessButtonStyle”
。视图是一个线性布局,包含图像、文本和两个按钮。我将用布局细节更新问题。如果在视图可见时进行测量,行为是否会改变?不,无论可见性如何,测量结果都是一样的。