根据TextView中的文本保持按钮不移动

时间:2015-06-05 13:06:05

标签: android android-layout

如何制作,以便Buttons不会转移到底部,具体取决于其上方TextView的内容? 如果TextView包含大量文字,则按下按钮 它可能需要使用RelativeLayout?你能解释一下我该怎么办?

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/mainbackground">

    <TextView
        android:id="@+id/tvBody"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tv_company"
        android:layout_marginLeft="30dp"
        android:textColor="#002060"
        android:layout_marginTop="20dp"
        android:textSize="15sp"
        >
    </TextView>
    <Button
        android:id="@+id/button_operations"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/gradient_blue"
        android:drawableLeft="@drawable/ic_purchase"
        android:paddingLeft="10dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:gravity="left|center"
        android:text=" oper1"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:textColor="#001B51"
        android:textSize="30sp"
        android:textStyle="bold"
        />

    ....... //4 more buttons

    <Button
        android:id="@+id/button_exit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/gradient_blue"
        android:paddingLeft="10dp"
        android:drawableLeft="@drawable/ic_exit"
        android:gravity="left|center"
        android:text="  Exit"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:textColor="#001B51"
        android:textSize="30sp"
        android:textStyle="bold"/>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

是的,RelativeLayout会更好地为此工作。注意添加了新属性。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/mainbackground">


<TextView
    android:id="@+id/tvBody"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/tv_company"
    android:layout_marginLeft="30dp"
    android:textColor="#002060"
    android:layout_marginTop="20dp"
    android:textSize="15sp"
    android:layout_alignParentStart="false"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true">
</TextView>
<Button
    android:id="@+id/button_operations"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/gradient_blue"
    android:drawableLeft="@drawable/ic_purchase"
    android:paddingLeft="10dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:gravity="left|center"
    android:text=" oper1"
    android:layout_marginTop="50dp"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:textColor="#001B51"
    android:textSize="30sp"
    android:textStyle="bold"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"/>

答案 1 :(得分:0)

另一种方法是以编程方式设置其位置:

var rx = new Regex(@"(\bred.*?)\d+");
var result = rx.Replace("this is red with number 111", "${1}666");

答案 2 :(得分:0)

默认情况下,您的TextView会根据需要增长。您可以对其进行限制,例如使用maxLines

<TextView
    android:maxLines="3"
    ... 
</TextView>

还有android:lines

如果您愿意,还可以使用android:ellipsize来显示TextView末尾有更多文字。

您可以阅读through the documentation以了解哪种属性最适合您。