TextView因边距而改变大小

时间:2015-10-26 15:49:39

标签: android xml view

当我使用Android:margin将textView定位在它的父级之外时,它表现得很奇怪:改变它自己的大小,文本在textView框内移动。我该如何预防呢? 在图像上:左侧textView最后有裁剪文字,我不想要那样。

enter image description here

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="16dp"
    android:clipChildren="false">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ellipsize="none"
        android:singleLine="true"
        android:textColor="#FFFFFF"
        android:textSize="22.5dp"
        android:layout_marginRight="200dp"
        tools:text="0 TEXT VIEWVIEW"
        tools:textColor="#000000" />
<...>
</FrameLayout>

3 个答案:

答案 0 :(得分:2)

FrameLayout总是与其子女重叠。为了有效放置小部件我建议使用,

带有LinearLayout

layout_weight

使用RelativeLayout

排列相对于另一个小部件的小部件

答案 1 :(得分:1)

我认为你需要改变这一行:

android:singleLine="true"

为假。

答案 2 :(得分:1)

这里有两个问题:

  1. 您使用的是FrameLayout。这意味着当你不断增加孩子的边缘时,视图将移出父母。为什么?因为那是FrameLayout的设计方式。阅读文档:http://developer.android.com/reference/android/widget/FrameLayout.html
  2.   

    FrameLayout旨在阻挡屏幕上的某个区域以显示单个项目。通常,FrameLayout应该用于保存单个子视图,因为以可以扩展到不同屏幕大小而儿童不会相互重叠的方式组织子视图可能很困难。

    因此,您可以使用RelativeLayoutLinearLayout

    1. 您遇到的第二个问题是android:singleLine="true"。这意味着随着文本长度的增加,它仍将显示在一行中,因此文本将被剪裁。因此,请将其设置为false,或者只删除此属性。

      android:singleLine="false"