展会信息港展会大全

Android布局 LinearLayou(线性布局)
来源:互联网   发布日期:2015-10-13 12:46:37   浏览:1696次  

导读:LinearLayou(线性布局布局)一些重要的属性: 一orientation(朝向) 该属性值有两种一种是垂直朝向(verticle),还有一个是水平朝向(horizontal)LinearLayout xmlns:android=http://schemas.android.com......

LinearLayou(线性布局布局)

一些重要的属性:

一 orientation(朝向)该属性值有两种一种是垂直朝向(verticle),还有一个是水平朝向(horizontal)

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

android:orientation="horizontal"

android:background="@drawable/blue"

android:layout_width="match_parent"

android:layout_height="wrap_content">

<!-- view1 goes on top -->

<TextView

android:background="@drawable/box"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/linear_layout_1_top"/>

<!-- view2 goes in the middle -->

<TextView

android:background="@drawable/box"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/linear_layout_1_middle"/>

<!-- view3 goes on the bottom -->

<TextView

android:background="@drawable/box"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/linear_layout_1_bottom"/>

</LinearLayout>

结果如下:

二 layout_weight(权重):

看下面一个例子: 该布局填充整个屏幕,其中有三个字控件,分别占据头部,底部,中间

在上一篇博客中我们通过相对布局也可以实现(把高设置成0,height=0)

更多关于该属性的细节可以浏览http://hi.baidu.com/mendynew/item/39cd374192770bab60d7b915

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

android:orientation="vertical"

android:background="@drawable/blue"

android:layout_width="match_parent"

android:layout_height="match_parent">

<!-- view1 goes on top -->

<TextView

android:background="@drawable/box"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/linear_layout_3_top"/>

<!-- view2 goes in the middle -->

<TextView

android:background="@drawable/box"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="@string/linear_layout_3_middle"/>

<!-- view3 goes on the bottom -->

<TextView

android:background="@drawable/box"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/linear_layout_3_bottom"/>

</LinearLayout>

运行结果:

下面一个例子,所有子空间的都是相同的宽度.也是通过该属性来实现的.

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

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:background="@drawable/red"

android:layout_width="0dip"

android:layout_height="match_parent"

android:layout_weight="1"/>

<TextView

android:background="@drawable/green"

android:layout_width="0dip"

android:layout_height="match_parent"

android:layout_weight="1"/>

<TextView

android:background="@drawable/blue"

android:layout_width="0dip"

android:layout_height="match_parent"

android:layout_weight="1"/>

<TextView

android:background="@drawable/yellow"

android:layout_width="0dip"

android:layout_height="match_parent"

android:layout_weight="1"/>

</LinearLayout>

下面看一个简单表单的例子,

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

android:orientation="vertical"

android:background="@drawable/blue"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:padding="10dip">

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/linear_layout_5_instructions"/>

<EditText

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@android:drawable/editbox_background"/>

<LinearLayout

android:orientation="horizontal"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="right" >

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/linear_layout_5_cancel"/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dip"

android:text="@string/linear_layout_5_ok" />

</LinearLayout>

</LinearLayout>

在上一篇博客中通过相对布局也能布局出这样的,但是从效率上说,相对布局要好很多,效率要高.从这个例子上看线性布局的层级要深.

weight属性还可以实现如下布局:

运行结果:

通过相对布局也是可以实现这样的布局,把button设置为android:layout_alignParentBottom ="true"

三 gravity(重心)

下面来看一个例子:

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="30dip" >

<LinearLayout

android:id="@+id/layout"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/blue"

android:orientation="vertical"

android:padding="30dip" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/box"

android:text="@string/linear_layout_8_c" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/box"

android:text="@string/linear_layout_8_b" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/box"

android:text="@string/linear_layout_8_c" />

</LinearLayout>

</FrameLayout>

Java代码:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

menu.add(0, VERTICAL_ID, 0, R.string.linear_layout_8_vertical);

menu.add(0, HORIZONTAL_ID, 0, R.string.linear_layout_8_horizontal);

menu.add(0, TOP_ID, 0, R.string.linear_layout_8_top);

menu.add(0, MIDDLE_ID, 0, R.string.linear_layout_8_middle);

menu.add(0, BOTTOM_ID, 0, R.string.linear_layout_8_bottom);

menu.add(0, LEFT_ID, 0, R.string.linear_layout_8_left);

menu.add(0, CENTER_ID, 0, R.string.linear_layout_8_center);

menu.add(0, RIGHT_ID, 0, R.string.linear_layout_8_right);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case VERTICAL_ID:

mLinearLayout.setOrientation(LinearLayout.VERTICAL);

return true;

case HORIZONTAL_ID:

mLinearLayout.setOrientation(LinearLayout.HORIZONTAL);

return true;

case TOP_ID:

mLinearLayout.setVerticalGravity(Gravity.TOP);

return true;

case MIDDLE_ID:

mLinearLayout.setVerticalGravity(Gravity.CENTER_VERTICAL);

return true;

case BOTTOM_ID:

mLinearLayout.setVerticalGravity(Gravity.BOTTOM);

return true;

case LEFT_ID:

mLinearLayout.setHorizontalGravity(Gravity.LEFT);

return true;

case CENTER_ID:

mLinearLayout.setHorizontalGravity(Gravity.CENTER_HORIZONTAL);

return true;

case RIGHT_ID:

mLinearLayout.setHorizontalGravity(Gravity.RIGHT);

return true;

}

return super.onOptionsItemSelected(item);

}

以上设置的gravity是通过Java代码设置的,也可以通过xml配置

需要注意的是layout_gravity和gravity的区别,前者是该控件相对于父控件的重心(gravity),后者该控件的子空间的重心(gravity)

欢迎转载,转载请注明出处: http://blog.csdn.net/johnny901114/article/details7866864

赞助本站

人工智能实验室

相关热词: LinearLayou 线性布局

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港