我在布局中有两个文本视图。我想将它们彼此相邻显示:
| [TextView1] [TextView2] |
第一个文本视图的宽度可能会有很大差异。从几个符号到100个符号,但是如果它太长并且TextView2应该始终可见,我想椭划它。像这样:
| [TextView1TextView1Tex ...] [TextView2] |
我尝试了以下布局,但它总是在屏幕的末尾显示TextView2:
[TextView1] [TextView2] |
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"/>
<TextView
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
我试图将TextView1的宽度从0更改为wrap_content,但是它会将TextView2推出视线,如下所示:
| [TextView1TextView1TextView1Text ...] |
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"/>
<TextView
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
非常感谢任何帮助。
答案 0 :(得分:6)
这可能是一种矫枉过正,但TableLayout
可以解决问题。
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="0">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/firstTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"/>
<TextView
android:id="@+id/secondTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"/>
</TableRow>
</TableLayout>
android:shrinkColumns="0"
就是这里的问题。它告诉表只收缩第一列,同时保持其他列不变。结果是系统只会调整第一列的大小,即第一个TextView。
答案 1 :(得分:1)
对这个解决方案并不感到自豪,但它确实可以解决问题, 我已将TextView1和TextView2的宽度设置为&#34; wrap_content&#34;
然后在代码中我将TextView1的maxWidth设置为其父级的80%,如下所示:
view.setMaxWidth((int)(((View)view.getParent()).getWidth() * 0.8));
答案 2 :(得分:0)
当您只为其中一个子元素指定权重时,您告诉android该视图是您唯一关注其可见性的视图。但是如果您为两个子视图指定权重。这可以确保两者都可见。
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"/>
<TextView
android:layout_width="0dp"
android:layout_weight="0.25" //this makes sure both views are displayed
android:layout_height="wrap_content"/>
</LinearLayout>
答案 3 :(得分:0)
Try this solution, it works for me,
<?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="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_weight="1"
android:layout_width="0dp"
android:ellipsize="end"
android:maxLines="1"
android:layout_height="wrap_content"
android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
<TextView
android:id="@+id/textView2"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="#FF0000"
android:text="Second Textview" />
</LinearLayout>
![enter image description here][1]
Output: Check below Screen shot: