我正在尝试实现两个TextViews的布局。 tv_username和tv_date将并排对齐。如果用户名短,则用户名和日期应完整显示;如果名称长,则用户名应在末尾截断,日期应完整显示。就像这样:-
在任何情况下,两个TextViews架子之间的最大间距均为5dp,即日期应始终位于用户名右边,边距为5dp,并且在父级中不与右边对齐。我已经尝试了下面的代码,但是使用更长的用户名将日期Textview推出了屏幕:-
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/value_3"
android:padding="@dimen/value_5"
android:paddingEnd="@dimen/value_10"
android:paddingStart="@dimen/value_10"
android:paddingTop="@dimen/value_5">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="@integer/value_1"
android:text="Samantha George Jefferson and some more text"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/size_fourteen"
android:layout_alignParentStart="true"/>
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/value_5"
android:layout_alignParentRight="true"
android:text="@string/friendly_date"
android:textColor="@color/colorBlack_a38"
android:textSize="@dimen/size_twelv"/>
</RelativeLayout>
任何帮助将不胜感激。
更新
我使用了ConstraintLayout
,但结果是相同的。
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="@integer/value_1"
android:text="Johnvfvjdfjgdkjhgjdgdjkghdjkghkjdhgdhgdgjkhjdfg"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/size_fourteen"
android:layout_alignParentStart="true"/>
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/value_5"
android:layout_alignParentRight="true"
android:text="@string/friendly_date"
android:textColor="@color/colorBlack_a38"
app:layout_constraintLeft_toRightOf="@+id/tv_username"
android:textSize="@dimen/size_twelv"/>
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:1)
TableLayout可以执行您想要的操作,如@ m4n3k4s所述,但如果要使用ConstraintLayout进行操作,则只需将其添加到xml布局中的TextView中即可。
override func viewDidLoad()
{
let videoURL = NSURL(string: "http://fitnation.theclientdemos.com:9000/media/uploads/videoplayback_3_JtVCHi1")
let player = AVPlayer(url: videoURL! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
显然将maxWidth设置为所需的值。
答案 1 :(得分:0)
您可以使用TableLayout来实现
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="0">
<TableRow>
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/lorem"
android:textColor="@color/colorPrimary"
android:textSize="14sp" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="1 hour ago"
android:textColor="#5000"
android:textSize="12sp" />
</TableRow>
</TableLayout>
答案 2 :(得分:-1)
您需要做的就是在tv_username
TextView中添加以下行
android:singleLine="true"
android:maxLines="1"
android:toLeftOf="+@id/tv_date"
android:toStartOf="+@id/tv_date"
android:ellipsize="end|right"
工作方式是在绘制tv_date
后绘制tv_username
,如果需要的空间超过可用空间,它将被截断