LinearLayout 水平在真实设备上显示不正确

LinearLayout horizontal not displayed properly on real device

我对水平方向的 LinearLayout 很困惑,因为它在窄屏设备上总是无法正确显示。这是我的代码。

<LinearLayout
                android:id="@+id/otherLinear"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:baselineAligned="false"
                android:gravity="center"
                android:orientation="horizontal"
                android:visibility="visible">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="20dp"
                    tools:ignore="UseCompoundDrawables">

                    <TextView
                        android:id="@+id/availableAction"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="5dp"
                        android:text="@string/add"
                        android:textColor="@color/icon_selected"
                        android:textSize="12sp" />

                    <ImageView
                        android:id="@+id/addFriendsBtn"
                        android:layout_width="50dp"
                        android:layout_height="50dp"
                        android:contentDescription="@string/welcome"
                        android:src="@drawable/ic_icons8_add_user" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="20dp"
                    tools:ignore="UseCompoundDrawables">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="5dp"
                        android:enabled="false"
                        android:text="@string/report_label"
                        android:textColor="@color/icon_selected"
                        android:textSize="12sp" />

                    <ImageView
                        android:id="@+id/reportBtn"
                        android:layout_width="50dp"
                        android:layout_height="50dp"
                        android:contentDescription="@string/welcome"
                        android:src="@drawable/icons8_spam" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="20dp"
                    tools:ignore="UseCompoundDrawables">

                    <TextView
                        android:id="@+id/followAction"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="5dp"
                        android:text="@string/follow"
                        android:textColor="@color/icon_selected"
                        android:textSize="12sp" />

                    <ImageView
                        android:id="@+id/followBtn"
                        android:layout_width="50dp"
                        android:layout_height="50dp"
                        android:contentDescription="@string/welcome"
                        android:src="@drawable/ic_follow" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="20dp"
                    tools:ignore="UseCompoundDrawables">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="5dp"
                        android:enabled="false"
                        android:text="@string/msg"
                        android:textColor="@color/icon_selected"
                        android:textSize="12sp" />

                    <ImageView
                        android:id="@+id/msgBtn"
                        android:layout_width="50dp"
                        android:layout_height="50dp"
                        android:contentDescription="@string/welcome"
                        android:src="@drawable/ic_icons8_weixin_100" />

                </LinearLayout>
            </LinearLayout>

这就是它在 AS 中的样子,这就是我需要的。

但不知为何,我总是这样。

我还检查了它是否只是因为文本视图很长,但事实并非如此。该视图在 AS 中是正确的,但在某些真实设备上我已经测试过它不是。谁能赐教一下我用LinearLayout horizo​​ntal已经一年了,一遍又一遍的调整

布局变化取决于设备分辨率和屏幕尺寸。 请访问:

https://developer.android.com/training/multiscreen/screensizes

或:

您需要在文本视图中添加此代码:

android:autoSizeTextType="uniform"
android:maxLines="1"
android:ellipsize="end"

您正在为您的 textView 使用换行内容。如果您的文本很长,您的视图也会很长,您可以在 XML 中减小文本视图的文本大小,并希望文本可以放在 1 行内,或者您可以使用 autofittextview - "A TextView that automatically resizes text to fit perfectly within its bounds".

Heie 是您使用此库的方式:

在您的 gradle 中添加此实现:

 implementation 'me.grantland:autofittextview:0.2.1' 

现在添加你的 textView :

   <me.grantland.widget.AutofitTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textSize="12sp"
        app:minTextSize="8sp" />