文本视图的填充应用于线性布局中的其他视图

时间:2014-06-09 05:57:53

标签: android android-layout

我在列表视图中使用以下项目布局。我期望第二个TextView(txt_time)出现在第一个TextView(txt_chat)的右下方。但两者都出现在彼此相邻的同一垂直空间中。我尝试在第一个TextView中添加底部填充,但它使第二个也自动向上移动以与第一个TextView保持一致。还有其他我可以试试的吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id ="@+id/wrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bubble_green"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/txt_chat"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:focusable="false"
            android:paddingBottom="20px"
            />

        <TextView
            android:id="@+id/txt_time"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="test"
            android:paddingBottom="0px"
            />

        </LinearLayout>
</LinearLayout>

这就是我想要实现的目标:

enter image description here

7 个答案:

答案 0 :(得分:1)

使用dp or dip代替px进行填充。并用现有的..替换以下视图。

<TextView
    android:id="@+id/txt_chat"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:gravity="top"
    android:layout_gravity="top"
    android:paddingBottom="20dip" />

<TextView
    android:id="@+id/txt_time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:layout_gravity="bottom"
    android:text="test" />

答案 1 :(得分:1)

从您的问题中不清楚文本视图应该如何对齐。据我所知,你想要像this

这样的东西
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id ="@+id/wrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#cccccc"
        >

        <TextView
        android:id="@+id/txt_chat"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:focusable="false"
        android:textSize="18sp"
        android:text="@string/hello_world"

        />

    <TextView
        android:id="@+id/txt_time"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/app_name"
        android:textSize="18sp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@+id/txt_chat"
        />

        </RelativeLayout>
</LinearLayout>

Image

enter image description here

答案 2 :(得分:1)

如何使用padding属性在childviews

之间获取空格

padding 用于在视图中获取空间。

您应该使用 padding 属性来取代margin,而不是textView

在第二个 marginTop = "20dp" marginLeft = "10dp"

中使用以下代码
<LinearLayout
    android:id ="@+id/wrapper"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/black"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/txt_chat"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:background="@android:color/darker_gray"
        android:padding="10dp"
        android:text="Hello"
        />

    <TextView
        android:id="@+id/txt_time"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:background="@android:color/darker_gray"
        android:text="test"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:padding="10dp"
        />

    </LinearLayout>

以下代码对您有用..

{{1}}

这可能对你有帮助..

答案 3 :(得分:0)

而不是paddingBottom给第一TextView而不是paddingTop给第二textView

尝试以下数据:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id ="@+id/wrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_launcher"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/txt_chat"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:focusable="false"
            android:text="first text"
            />

        <TextView
            android:id="@+id/txt_time"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="test"
           android:paddingTop="20dp"
            />

        </LinearLayout>
</LinearLayout>

希望它有效

答案 4 :(得分:0)

而不是 px 使用 dp

android:paddingBottom="20dp"

答案 5 :(得分:0)

请将 android:layout_gravity =“bottom”添加到最后一个textview。希望这有效

如果您想要全屏宽度,请使用以下xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<LinearLayout
    android:id ="@+id/wrapper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bubble_green"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/txt_chat"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:focusable="false"
        android:paddingBottom="20px"
        />

    <TextView
        android:id="@+id/txt_time"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="test"
        android:layout_gravity="bottom|right"
        android:paddingBottom="0px"
        />

    </LinearLayout>

答案 6 :(得分:0)

尽管发布的各种答案都有很好的解决方案,但没有一种解决方案可以解决整个问题。所以我把它合并到一个答案中。谢谢你的回答。

使用此布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id ="@+id/wrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bubble_green"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/txt_chat"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:focusable="false"
            android:layout_marginBottom="5dp"
            />

        <TextView
            android:id="@+id/txt_time"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="test"
            android:layout_gravity="bottom"
            android:layout_marginLeft="5dp"
            />

        </LinearLayout>
</LinearLayout>

注意事项:

  1. 使用边距而不是填充。
  2. 使用layout_marginBottom txt_chat与父LinearLayout。与RelativeLayout一起使用将无效。
  3. layout_gravity="bottom"使用txt_time,以便在txt_chat输入多行文字时不会向上移动。