使用支持可访问性的大字体测量Android视图
我有一些代码需要知道视图的大小。所有正常字体都可以正常使用,但是当手机在辅助功能选项中选择了“大字体”时,似乎会出现问题。从我所能收集到的信息来看,视图的高度返回相同的值,忽略较大的字体 复杂性来自这样一个事实,即我在测量视图时将可见性设置为view.GONE。这是我当前的代码:使用支持可访问性的大字体测量Android视图,android,fonts,accessibility,Android,Fonts,Accessibility,我有一些代码需要知道视图的大小。所有正常字体都可以正常使用,但是当手机在辅助功能选项中选择了“大字体”时,似乎会出现问题。从我所能收集到的信息来看,视图的高度返回相同的值,忽略较大的字体 复杂性来自这样一个事实,即我在测量视图时将可见性设置为view.GONE。这是我当前的代码: v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMea
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”
。视图是一个线性布局,包含图像、文本和两个按钮。我将用布局细节更新问题。如果在视图可见时进行测量,行为是否会改变?不,无论可见性如何,测量结果都是一样的。