我有一个水平线性布局,包含3个元素,一个图标和两个文本视图:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_margin="8dp"
android:background="@drawable/icon_place" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:maxLines="1"
android:text="Information 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Information 2"
android:gravity="right"
android:textSize="13sp"
android:maxLines="1"
android:textColor="@android:color/darker_gray"
android:layout_margin="8dp"/>
</LinearLayout>
给我这个:
我想要第二个文字视图&#34;信息2&#34;始终保持可见,如果需要,第一个文本视图被裁剪。但是第一个文本视图中的长文本会发生这种情况:
那我该怎么做呢?谢谢你的帮助!
答案 0 :(得分:1)
首先你设置android:maxLines = 1来强制你的文本视图在一行可见。如果您希望textview根据内容进行裁剪。从xml中删除以下代码。
android:maxLines="1"
第二件事你的第一个textview
占用线性布局的剩余空间而不是第二个textview
和imageview
你必须使用linearlay的android:weight属性。你可以在这里看到简单的布局重量属性。
https://developer.android.com/guide/topics/ui/layout/linear.html
Weightsum
equalweights
distributed weights
您需要的所有复杂线性布局。请参阅本教程以获取帮助
http://abhiandroid.com/ui/linear-layout
这是代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recycler_view_empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_margin="8dp"
android:background="@drawable/ic_menu_send" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_weight="1"
android:text="Information 1 IInformation Information InformationInformationvvvInformation Information"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Information 2"
android:textSize="13sp"
android:maxLines="1"
android:textColor="@android:color/darker_gray"
android:layout_margin="8dp"/>
</LinearLayout>
<强>输出:强>
在编辑器视图中
答案 1 :(得分:0)
您可以使用weightsum属性将两个TextView包装在水平LinearLayout中,将其分成两个相等大小的部分。如果文本太长,您也可以对文本进行椭圆化处理。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_margin="8dp"
android:background="@drawable/icon_place" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:maxLines="1"
android:gravity="center_horizontal"
android:layout_weight="1"
android:text="Information 1 with a very very long test"
android:ellipsize="end"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Information 2"
android:gravity="center_horizontal"
android:textSize="13sp"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@android:color/darker_gray"
android:layout_margin="8dp"/>
</LinearLayout>
</LinearLayout>
结果如下:
答案 2 :(得分:-1)
如果将其添加到所有3个组件,则存在“android:weigth = 1”的概念。然后它们的宽度总是33.3%,宽度不应该在显示长文本时改变,如果你想要宽度大约10%40%40%那么你将不得不召唤这个标签,ksatai值不被接受格式0.5,他们需要以这种格式写在这里.5
答案 3 :(得分:-1)
您应该将android:layout_weight="1"
设置为中间的TextView
,并将match_parent
更改为wrap_content
以获得第3个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"
android:orientation="horizontal">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_margin="8dp"
android:background="@drawable/ic_launcher_background" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_weight="1"
android:maxLines="1"
android:text="Information 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:gravity="right"
android:maxLines="1"
android:text="Information 2"
android:textColor="@android:color/darker_gray"
android:textSize="13sp" />
</LinearLayout>
答案 4 :(得分:-1)
使用这个 -
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_margin="8dp"
android:background="@android:drawable/ic_lock_idle_alarm" />
<TextView
android:layout_toRightOf="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:maxLines="1"
android:text="Information 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Information 2"
android:layout_marginLeft="28dp"
android:background="@android:color/white"
android:gravity="right"
android:textSize="13sp"
android:maxLines="1"
android:textColor="@android:color/darker_gray"
android:layout_marginTop="8dp"
android:layout_marginRight="8dp"/>
</RelativeLayout>