使用辅助功能启用的大字体测量Android视图

时间:2015-09-03 17:09:05

标签: android fonts accessibility

我有一些代码需要知道视图的大小。一切正常的字体工作正常,但是当手机有大字体时似乎有问题。在辅助功能选项中选择。从我可以收集到的视图的高度返回同样忽略较大的字体。

复杂性来自于我在将可见性设置为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>

0 个答案:

没有答案