Android 4 - LinearLayout顶部和底部填充不起作用

时间:2018-03-27 08:40:27

标签: android android-linearlayout padding

我有一个带有TextView的LinearLayout。问题是在Android 4上填充不能正常工作。我在HTC One X模拟器Android 4.4.2上测试应用程序

我的布局:

<LinearLayout
        android:id="@+id/msg_body"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="12dp"
        android:background="@drawable/chat_msg_bg"
        android:elevation="2dp"
        android:orientation="vertical"
        android:padding="16dp"
        android:paddingLeft="16dp"
        android:paddingStart="16dp"
        android:paddingEnd="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:paddingBottom="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="@+id/user_name"
        app:layout_constraintTop_toBottomOf="@+id/user_name"
        app:layout_constraintVertical_bias="0.0">

现在看起来像这样:

enter image description here

左右填充正在工作,但顶部和底部不起作用。什么可能导致这个问题,有没有办法处理这个?我试图以编程方式设置填充,但没有效果。在其他操作系统版本和设备上,这可以正常工作。

UPD:它应该如何:

enter image description here

3 个答案:

答案 0 :(得分:2)

首先尝试删除android:padding="16dp"。 如果这不起作用,请尝试将填充提供给TextView而不是LinearLayout

答案 1 :(得分:1)

尝试实用地填充:

layout.setPadding(left,top,right,bottom);

这将以px作为参数。从dp转换为px:

 Resources r = mContext.getResources();
 int px = (int) TypedValue.applyDimension(
        TypedValue.COMPLEX_UNIT_DIP,
        dpmeasure, 
        r.getDisplayMetrics()
);

只需从XML中删除所有填充。

Reference

  

在线性布局中为textview添加边距。并删除填充   线性布局。

答案 2 :(得分:0)

android:padding="16dp"的{​​{1}}中设置TextView