Android UI布局组件在字体大小更改时错误地调整大小

时间:2015-12-01 11:05:28

标签: android xml android-layout layout

我有一个3个组件的布局完美对齐,只要用户不改变Android手机显示设置中的字体大小... 发生这种情况,UI元素无法正确对齐。我最好的猜测是它与布局权重有关。

正如您所看到的,CSR提及会略低于......

 <LinearLayout
            android:id="@+id/r"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/div"
            android:layout_marginBottom="3dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="3dp"
            android:background="@color/nliveo_white"
            android:padding="@dimen/pad">


            <LinearLayout
                android:id="@+id/rec"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/recshape"
                android:orientation="vertical">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:text="Direct Mentions"
                    android:textColor="#ffffff"
                    android:textSize="@dimen/txt_sz" />

                <TextView
                    android:id="@+id/dir"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:clickable="true"
                    android:gravity="center"
                    android:text="164"
                    android:textColor="#ffffff"
                    android:textSize="30dp" />

            </LinearLayout>


            <LinearLayout
                android:id="@+id/rec2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/rec2shape"
                android:orientation="vertical"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:text="Industry Mentions"
                    android:textColor="#ffffff"
                    android:textSize="@dimen/txt_sz" />

                <TextView
                    android:id="@+id/idm"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:clickable="true"
                    android:gravity="center"
                    android:text="30"
                    android:textColor="#ffffff"
                    android:textSize="30dp" />

            </LinearLayout>


            <LinearLayout
                android:id="@+id/rec3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/rec3shape"
                android:orientation="vertical">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:phoneNumber="false"
                    android:text="CSR Mentions"
                    android:textColor="#ffffff"
                    android:textSize="@dimen/txt_sz" />

                <TextView
                    android:id="@+id/csr"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:clickable="true"
                    android:gravity="center"
                    android:text="14"
                    android:textColor="#ffffff"
                    android:textSize="30sp" />

            </LinearLayout>

2 个答案:

答案 0 :(得分:0)

如果文字大小是在&#39; sp&#39;这是一种正常的行为。 看一下docs中SP的定义。

  

与比例无关的像素 - 这就像dp单位,但它也是   按用户的字体大小首选项缩放。建议你使用   指定字体大小时,此单位将进行调整   屏幕密度和用户的偏好。

您可以使用&#39; dp&#39;而是取决于你的逻辑。

答案 1 :(得分:0)

这是由于定义文本大小时使用的单位。

我猜你的维度由@ dimen / txt_sz定义在sp中,就像蓝色方块的数量一样,你可以看到那些只是对用户改变作出反应的那些。

将文字大小更改为sp,所有内容都应修复。

  

与比例无关的像素(sp)这与dp单位类似,但它也可以根据用户的字体大小首选项进行缩放。建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户的偏好调整它们。