关于android:屏幕底部的白线(LinearLayout)

White line at the bottom of the screen (LinearLayout)

我正在为我的应用程序登录屏幕。 问题是我在每个设备和模拟器上的屏幕底部都有一条白线。
你可以在这里查看输出:

View post on imgur.com


这是我布局的xml代码。 请注意,我在所有设备之间使用layout_weight属性来获得相等的空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="0.5"
        android:src="@mipmap/ic_launcher"
        android:layout_gravity="center"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:paddingLeft="55dp"
        android:paddingRight="55dp"
        android:background="@color/colorPrimary"
        >
        <EditText
            android:id="@+id/edtEmailOrMobileNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/email_or_mobile_number"
            android:background="@null"
            android:inputType="textEmailAddress"
            android:textColor="@android:color/white"
            android:textColorHint="@android:color/white"
            android:drawableLeft="@drawable/ic_clear"

            android:layout_marginTop="64dp"
            />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/white"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            />
        <EditText
            android:id="@+id/edtPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:background="@null"
            android:inputType="textPassword"
            android:textColor="@android:color/white"
            android:textColorHint="@android:color/white"
            android:drawableLeft="@drawable/ic_clear"
            android:drawableRight="@drawable/ic_clear"

            android:layout_marginBottom="20dp"
            />
        <Button
            android:id="@+id/btnSignIn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/sign_in"
            android:layout_gravity="center"
            android:textColor="@color/blue_login_button"
            android:background="@drawable/rounded_corner_button_login_background"
            android:textAllCaps="false"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="@string/dont_have_an_account"
            android:layout_gravity="center"
            android:gravity="center|bottom"
            android:paddingBottom="30dp"
            android:textColor="@android:color/white"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:orientation="vertical"
        android:gravity="center"
        android:background="@drawable/button_create_account_background"
        android:clickable="true"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/create_an_account"
            android:textColor="@android:color/white"
            />
    </LinearLayout>

</LinearLayout>


哪里有错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.2"
    android:orientation="vertical"
    android:gravity="center"
    android:background="@drawable/button_create_account_background"
    android:clickable="true"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_an_account"
        android:textColor="@android:color/white"
        />
</LinearLayout>

实际上你的最后一个布局不是purely底部。这就是为什么有问题。另一个问题android:layout_weight="0.2"。android:layout_weight不适合设置底部。

试试这个

我认为你应该尝试相对布局。如果你有一个填充整个屏幕的相对布局你应该能够使用android:layout_alignParentBottom将按钮移动到屏幕的底部。礼貌

要么

您可以使用LinearLayout android:weightSum属性。

What is android:weightSum in android, and how does it work?


我有同样的问题,并将LinearLayout的android:layout_height="match_parent"更改为android:layout_height="fill_parent"解决了这个问题。

白色边框仅在我的应用程序中的一个"幻灯片"上显示。我不确定,但我认为我们展示的图像会对此产生影响。

当然,改变layout_height并不是我们总能做到的。它更像是一种解决方法,而不是一种合适的解决方案。


我找到修复1dp线问题的最简单方法是扩大您用于权重的值。

一种简单的方法是缩放每个权重,直到没有小数点为止,例如:

1
android:layout_weight="0.2"

会成为

1
android:layout_weight"2"

如果将此乘数应用于布局中的每个权重,则它们应保持相同的比例但底部没有线。

我不能肯定地说,但我的假设是使用较小的十进制值会导致Android出现一些舍入错误 - 将不需要的1dp行留在布局的底部。