固定宽度TextView旁边的可变宽度TextView

问题描述:

我试图创建一个布局,两个TextViews彼此相邻。第一个TextView具有可变长度并且是单线的。第二个TextView包含一个固定的标签,并且应该而不是被椭圆化。 第二个标签必须紧靠第一个标签。 这里是什么,我试图完成两个例子:固定宽度TextView旁边的可变宽度TextView

enter image description here enter image description here

这是我到目前为止已经取得的成就:

enter image description here

有了这个布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:background="@drawable/my_bg" 
      android:padding="16dp" 
tools:layout_height="60dp"> 

<TextView 
    android:layout_centerVertical="true" 
    android:id="@+id/tv_street" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/tv_updated" 
    android:textSize="17sp" 
    android:singleLine="true" 
    android:ellipsize="end" 
    android:layout_marginLeft="16dp" 
    tools:text="This label is short"/> 

<TextView 
    android:id="@id/tv_updated" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:layout_marginLeft="10dp" 
    android:text="@string/updated" 
    android:textAllCaps="true" 
    android:textColor="@color/red" 
    android:textStyle="bold"/> 
</RelativeLayout> 

剩下的问题是t该容器的宽度与其父级相匹配,而应该是wrap_content

有没有其他方法可以解决这个问题?

+0

是正确的,你要固定权或将与第一个 – Pavan

您更好地使用的LinearLayout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:padding="16dp" 
       android:orientation="horizontal" 
       android:gravity="center_vertical" 
       tools:layout_height="60dp"> 
    <TextView 
     android:id="@+id/tv_street" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="17sp" 
     android:layout_weight="1" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:layout_marginLeft="16dp" 
     tools:text="This label is short"/> 

    <TextView 
     android:id="@id/tv_updated" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:text="UPDATED" 
     android:textAllCaps="true" 
     android:textColor="@color/red" 
     android:textStyle="bold"/> 
</LinearLayout> 

编辑: 这里证明

tested

+0

总是被调整这将导致更新的TextView一个文本将被推离你尝试在屏幕 – dumazy

+0

?我测试,因为layout_weight它没有推 – aiwiguna

我希望这可以帮助。可能需要稍微调整,但是一些隐藏的视图可能会实现您正在寻找的内容。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:padding="16dp" 
    tools:layout_height="60dp"> 

    <TextView 
     android:layout_centerVertical="true" 
     android:id="@+id/tv_street" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:textSize="17sp" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:layout_marginLeft="16dp" 
     tools:text="This label is short" /> 

    <TextView 
     android:layout_centerVertical="true" 
     android:id="@+id/hidden_street" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/hidden_updated" 
     android:layout_alignParentLeft="true" 
     android:textSize="17sp" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:layout_marginLeft="16dp" 
     tools:text="This label is short" 
     android:visibility="invisible"/> 

    <TextView 
     android:id="@+id/tv_updated" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" 
     android:layout_toRightOf="@+id/tv_street" 
     android:text="updated" 
     android:textAllCaps="true" 
     android:textStyle="bold"/> 

    <TextView 
     android:id="@+id/hidden_updated" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" 
     android:text="updated" 
     android:textAllCaps="true" 
     android:textStyle="bold" 
     android:visibility="invisible"/> 
</RelativeLayout> 

检查下面的代码它会帮助你

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


     <TextView 
      android:layout_centerVertical="true" 
      android:id="@+id/tv_street" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/tv_updated" 
      android:textSize="17sp" 
      android:singleLine="true" 
      android:ellipsize="end" 
      android:layout_weight="1" 
      android:layout_marginLeft="16dp" 
      tools:text="This is fdfdfffddfdfdfffdfdfdfdffshort"/> 

     <TextView 
      android:id="@id/tv_updated" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="10dp" 
      android:text="Updated" 
      android:textAllCaps="true" 
      android:textStyle="bold"/> 
    </LinearLayout> 

按您的要求的LinearLayout是更好的选择,如果没有作品让我知道