我在列表视图中使用以下项目布局。我期望第二个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>
这就是我想要实现的目标:
答案 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>
答案 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>
注意事项:
layout_marginBottom
txt_chat
与父LinearLayout
。与RelativeLayout
一起使用将无效。layout_gravity="bottom"
使用txt_time
,以便在txt_chat
输入多行文字时不会向上移动。