androidlayout_weight

是用于给一个线性布局(LinearLayout)中的诸多视图的重要度赋值。

所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多的的屏幕空间。若赋值高于零又是怎么样的呢?

在网上有很多关于layout_weight的学习资料,网上介绍的都大同小异,以为该学到的都学到的时候,一实践就发现了一些问题。以下一段是网上关于layout_weight值大于零的显示效果的说法。

如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为12,那么第一个文本框将占据剩余空间的三分之二,第二个文本框将占据剩余空间中的三分之一。android:layout_weight遵循数值越小,重要度越高的原则。

网上说法都没有提到layout_width/layout_height的值,事实上layout_weight的属性值跟layout_width/layout_height有很大的关系,下面是我结合网上学习和个人实践后作出的有关layout_weight使用的小结。当然正不正确读者自己实践证明就知道。

首先一点LinearLayout中要让layout_weight生效,需要父层或父父层的相应layout_width/layout_height=fill_parent”,否则“wrap_content”会压缩到最小足够空间。

第二所有的视图都有一个layout_weight值,默认为零,需要显示多大的视图就占据多的的屏幕空间。

第三:当layout_weight值大于零是情况有二。以三个并列的文本框为例说明如下,其中layout_width影响layout_weight,代码如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<TextView

android:background="#ff0000"

android:layout_width="**"

android:layout_height="wrap_content"

android:text="1"

android:textColor="@android:color/white"

android:layout_weight="1"/>

<TextView

android:background="#cccccc"

android:layout_width="**"

android:layout_height="wrap_content"

android:text="2"

android:textColor="@android:color/black"

android:layout_weight="2"/>

<TextView

android:background="#ddaacc"

android:layout_width="**"

android:layout_height="wrap_content"

android:text="3"

android:textColor="@android:color/black"

android:layout_weight="3"/>

</LinearLayout>

情况一:

三个文本框的都是layout_width=fill_parent”时,其权重赋值遵循数值越小,重要度越高的原则。这种情况下,没有设置layout_weight的话,第一个组件将占用余下的空间,那么后面的组件就显示不出来。

  • 都为 1 的话就是平分

(图一)

  • 1 2 3 的话,只有前面两个文本框显示,比例为 2 1 (如图一)。

(图二)

  • 1 2 2 的话,分成 5 份,三个文本框都显示,比例为 3:1:1 (如图三);
    (图三)
  • 1 3 3 的话,分成 7 份,三个文本框都显示,比例为 5:1:1

(图四)

注意:这种情况适合两个组件设置权重,多了的话不好预知显示结果,设置不好的话有些组件无法显示。

情况二:

三个文本框的都是layout_width=wrap_content”时,其值表示占用剩余空间的比例。

  • 1 2 3 的话,分成 6 份,三文本框显示,比例 1:2:3 (如图五)

(图五)

情况三:

当三个文本框中的layout_width的值既有fill_parent又有wrap_content时,以fill_parent优先。

结束语不同情况显示的都不同,有些虽然别人介绍,我们以为懂了,可是就有那么多小细节没有考虑到导致结果相差甚远,所以每个效果只有自己试了才知道,只有出错了才了解,只有成功了才确定。

更多相关文章

  1. Android(安卓)属性动画看这篇就够了
  2. Android事件拦截处理机制理解:
  3. Android--自定义视图控件(一)(Android(安卓)Studio)
  4. Android仿人人客户端(v5.7.1)——消息中心视图的实现
  5. android按需加载你的界面
  6. 关于ExpandableListView用法的一个简单小例子
  7. 第十篇ANDROID的ActionBar及菜单机制
  8. Android集成友盟QQ、空间分享、微信、微博闪退
  9. 之View state changes(视图状态改变)

随机推荐

  1. android canvas 绘图笔记
  2. android rdp 远程桌面项目
  3. [置顶] android面试大宝典
  4. 【Android(安卓)界面效果26】listview an
  5. ReactNative常见问题及解决方法
  6. eclipse 导出项目到 android studio .so
  7. Android(安卓)Phonebook编写联系人UI加载
  8. Android RecyclerView+CardView 实现瀑布
  9. Android截图方法
  10. android scrollview listview 滚动冲突解