不知道这样的布局该怎么描述,标题也是乱取的。。直接上图吧

最近遇到了这样要求的布局:

1、上图中的“标题”长度不定,“状态”标签可能有多个并紧跟在标题右边,“属性”一直居右显示;

2、当“标题”过长,一行显示不下时,“标题”换行显示,但不能挤掉“状态”和“属性”。

刚开始用了LinearLayout和RelativeLayout的多层嵌套总算是强行实现,但是嵌套太深了,而且代码看着也相当复杂,所以修改为用TableLayout,利用shrinkColumns和stretchColumns保证跟随的视图不被挤掉。

当然还有一个问题没解决:固定居右的“属性”一直没能放进TableLayout里,尝试设置“属性”为 stretchColumns + match_parent + gravity: right,放到TableRow的最后,但是没有效果,所以这里才套了层RelativeLayout,如果有办法能把RelativeLayout这层都省去,麻烦大家告诉我下~

  1. <RelativeLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="wrap_content"
  4. android:gravity="center"
  5. android:orientation="horizontal">
  6.  
  7. <TableLayout
  8. android:id="@+id/table"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:layout_toLeftOf="@+id/txvCreateTime"
  12. android:shrinkColumns="0"
  13. android:stretchColumns="1|2">
  14.  
  15. <TableRow android:gravity="center_vertical">
  16.  
  17. <TextView
  18. android:id="@+id/txvTitle"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:ellipsize="end"
  22. android:maxLines="2"
  23. android:text="居左居左居左居左居左居左"
  24. android:textColor="@android:color/black"
  25. android:textSize="@dimen/dimens_16_sp"
  26. android:textStyle="bold" />
  27.  
  28. <TextView
  29. android:id="@+id/txvState1"
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:layout_marginLeft="@dimen/dimens_5_dp"
  33. android:background="@drawable/layout_bg_orange"
  34. android:paddingBottom="@dimen/dimens_2_dp"
  35. android:paddingLeft="@dimen/dimens_5_dp"
  36. android:paddingRight="@dimen/dimens_5_dp"
  37. android:paddingTop="@dimen/dimens_2_dp"
  38. android:singleLine="true"
  39. android:text="跟随"
  40. android:textColor="@android:color/white"
  41. android:textSize="@dimen/dimens_12_sp" />
  42.  
  43. <TextView
  44. android:id="@+id/txvState2"
  45. android:layout_width="wrap_content"
  46. android:layout_height="wrap_content"
  47. android:layout_marginLeft="@dimen/dimens_5_dp"
  48. android:background="@drawable/layout_bg_orange"
  49. android:paddingBottom="@dimen/dimens_2_dp"
  50. android:paddingLeft="@dimen/dimens_5_dp"
  51. android:paddingRight="@dimen/dimens_5_dp"
  52. android:paddingTop="@dimen/dimens_2_dp"
  53. android:singleLine="true"
  54. android:text="跟随"
  55. android:textColor="@android:color/white"
  56. android:textSize="@dimen/dimens_12_sp" />
  57. </TableRow>
  58. </TableLayout>
  59.  
  60. <TextView
  61. android:id="@+id/txvCreateTime"
  62. android:layout_width="wrap_content"
  63. android:layout_height="wrap_content"
  64. android:layout_alignParentRight="true"
  65. android:layout_centerVertical="true"
  66. android:layout_marginLeft="@dimen/dimens_5_dp"
  67. android:gravity="center"
  68. android:text="居右"
  69. android:textColor="#999999"
  70. android:textSize="@dimen/dimens_14_sp" />
  71. </RelativeLayout>

阅读原文

Android布局:宽度适应的横向跟随,防止挤掉重要视图的更多相关文章

  1. Android布局优化:include 、merge、ViewStub的详细总结

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要是对上篇博客的补充Android性能优化之UI渲染性能优化, 没有什么新东西,觉得应该是都掌握的玩意,写出来也只是自己做个小小的总结. ...

  2. Android布局中的空格以及占一个汉字宽度的空格的实现

    在Android布局中进行使用到空格,以便实现文字的对齐.那么在Android中如何表示一个空格呢? 空格:  窄空格:  一个汉字宽度的空格:   [用两个空格(  )占一个汉字的宽度时,两个空格比 ...

  3. Android布局中的空格以及占一个汉字宽度的空格,实现不同汉字字数对齐

    前言 在Android布局中进行使用到空格,以便实现文字的对齐.那么在Android中如何表示一个空格呢? 空格: (普通的英文半角空格但不换行) 窄空格:   (中文全角空格 (一个中文宽度))   ...

  4. Android 布局简要范例

    Android的布局决定着实际的UI界面呈现情况,正是这些UI界面的组合与千变万化,才呈现出了各式各样的风格. 而这些基础的布局框架结构很重要,需要玩的很熟悉.我将以前参考的部分代码示例,所做的相关实 ...

  5. Android 布局管理器

    为了更好地管理Android应用程序的用户界面组件,Android它提供了一个布局管理.通过使用布局管理,Android具有良好的平台无关的图形用户界面应用程序. 平时,推荐布局管理器来管理分布式组件 ...

  6. Android布局及属性归总(查询用)

    常见布局 LinearLayout    线性布局        子元素任意,组织成一个单一的水平或垂直行,默认为水平方向TableLayout    表格布局        子元素为<Tabl ...

  7. [转]HorizontalScrollView介绍--支持水平滚动的android布局容器

    类概述 用 于布局的容器,可以放置让用户使用滚动条查看的视图层次结构,允许视图结构比手机的屏幕大.HorizontalScrollView是一种 FrameLayout(框架布局),其子项被滚动查看时 ...

  8. Android 布局之TableLayout

    Android 布局之TableLayout 1 TableLayout简介 TableLayout是表格布局.TableLayout 可设置的属性包括全局属性及单元格属性. 1.1 全局属性 有以下 ...

  9. Android 布局之FrameLayout

    Android 布局之FrameLayout 1 FrameLayout简介 对于FrameLayout,官方介绍是:FrameLayout is designed to block out an a ...

随机推荐

  1. [转] Shader Blending

    引用:1.Unity3D shader Blending2.[风宇冲]Unity3D教程宝典之Shader篇:第十三讲 Alpha混合 混合(Blending)是计算机呈现渲染结果的最后阶段,每一个像 ...

  2. 关于python,完善我计算机知识的一步。

    因为身为理科男,所以特别喜欢涉及其他领域的知识.而对我来说,计算机是很有诱惑力的--尤其是程序语言设计,懂得一门“外语”是多么的重要.大一时候接触过包括有计算机的基本知识,c语言,这个新的学期也开始接 ...

  3. java37

    1.键盘录入格式: Scanner sc = new Scanner(System.in); int i = sc.nextInt();//录入整数 字符: Scanner sc1 = new Sca ...

  4. MySQL远程连接失败(错误码:2003)

    一 环境信息 服务器系统:Ubuntu 18.04 服务器MySQL版本:14.14 Distrib 5.7.25 本地系统:Kali Linux 本地客户端:python3交互模式 本地开发环境:p ...

  5. 移动端H5页面禁止长按复制和去掉点击时高亮

    /*设置IOS页面长按不可复制粘贴,但是IOS上出现input.textarea不能输入,因此将使用-webkit-user-select:auto;*/ *{ -webkit-touch-callo ...

  6. MySQL中 指定字段排序函数field()的用法

    MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序. 函数使用格式如下: order by (str,str1,str2,str3,str4……),str与str1,str ...

  7. Java JSONArray for循环 remove成员的一个好算法

    好久没写日志了,今天来写一个,JSONArry fro循环判断value,移除不需要的,不需再将JSONArry再次转换成 map或list. JSONArray移除成员只能通过for遍历取成员,判断 ...

  8. Notes : <Hands-on ML with Sklearn & TF> Chapter 6

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  9. 怎么解决syntaxerror:non-utf-8 code starting with \xc4'in file

    怎么解决syntaxerror:non-utf-8 code starting with \xc4'in file   首行增加,已测试可用. # coding=gbk   程序中出现中文,运行的时候 ...

  10. <<君主论>>读后感

    “<君主论>与<圣经>齐名,被称为邪恶的圣经,这本书的立论基础是人性本恶论,他所描述的人性之恶,主要是以西欧资本原始积累背景下的现实社会中人的各种丑恶现象为蓝本的.” 要是高中 ...