2011-05-02 58 views
2

我一直试图获得一定的布局,但所有的尝试都失败了。并排有两个TextView,第一个伸展和限制,第二个固定

我在有限的空间内有2个textview。只要有空间同时显示,我希望他们能够显示一个接一个:

| T1 T2222   | 
| T111111 T2222  | 

但是,当空间不足的情况,我想只有第一个获得ellipsized或以其他方式切割,比如这个:

| T1111111... T2222 | 

它可能有帮助 - 或不 - 这两个都只应该有1行。

它可以帮助 - 或不 - - 第二个宽度可以修复。

  • 我已经试过想法在Two TextViews side by side, only one to ellipsize?,但这种情况下,我的不同,因为他们的T2是指在合适的锚,而我想有T2只要按照T1。

  • 我已经试过为T2指定一个minWidth,但它似乎并没有兑现;普通宽度是,但我似乎无法控制T1的行为。

  • 我已经涉足重量,但没有发现任何可以解决问题的东西。但那可能是我的经验不足。

  • 我可以为T1指定一个maxWidth,它可以按照我希望的方式进行操作,但问题是有限空间的整个宽度是未指定的。

在这一点上,我开始认为没有办法做到这一点 - 除非编程方式,这是我想避免的路线。

谢谢你的任何建议。

回答

6

将连接两个字符串并将结果放入单个TextViewellipsize="middle"设置工作?

或者一个布局,第二个textview与右边对齐?

| T1   T2222 | 
| T111111  T2222 | 
| T1111111... T2222 | 

更新
以的是,第二文本视图的宽度可以是固定的能力的优势,下面的RelativeLayout提供与期望的布局(通过显式设置所述第二视图的至60dp宽度):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:gravity="fill"> 
    <TextView android:id="@+id/secondText" 
     android:layout_width="60dp" android:layout_height="wrap_content" 
     android:singleLine="true" android:layout_alignParentRight="true" /> 
    <TextView android:id="@+id/dynamicText" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:layout_marginRight="5dp" android:layout_toLeftOf="@id/secondText" 
     android:singleLine="true" android:ellipsize="end" /> 
</RelativeLayout> 

上面的代码生成以下布局:

| T1 T2222   | 
| T111111 T2222  | 
| T1111111... T2222 | 

宽度为两个TextViews之间5dp的差距。

+0

1.我没有想到这一点,这是一个有趣的想法,但不是设计师想到的。谢谢。 2.否,T2必须在T1旁边。 – entonio 2011-05-02 19:43:02

+0

请在我的更新中查看布局,我希望它能为您工作。 – rekaszeru 2011-05-02 20:42:44

+0

非常感谢!:)我放弃了这一点,但你的例子完美的作品。我会投票答复,但我今天刚刚注册...只是为了记录:没有引力=“填充”,RelativeLayout只会从右侧填充;如果T2没有被首先声明,则T2将是椭圆而不是T1。 – entonio 2011-05-02 21:27:35