一步一步学android之布局管理器——LinearLayout

线性布局是最基本的一种布局,在基本控件篇幅中用到的都是LinearLayout,线性布局有两种方式,前面也有用到,一种是垂直的(vertical),一种是水平的(horizontal)。我们同样来看下LinearLayout的定义(http://developer.android.com/reference/android/widget/LinearLayout.html):


其实Android中的所有组件包括布局管理器都是View的子类,对于这些View类的组件,除了可以像前面用xml定义之外,还可以在java代码中实现,下面就写个例子(在java代码中实现布局的动态添加):

效果如下:

一步一步学android之布局管理器——LinearLayout

MainActivity.java:

 

package com.example.linearlayoutdemo;



import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.view.Menu;

import android.view.ViewGroup;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;



public class MainActivity extends Activity {



	@Override

	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

//		setContentView(R.layout.activity_main);不加载xml文件,这里注释掉,以便看出区别。

		//创建线性布局

		LinearLayout layout = new LinearLayout(this);

		//设置布局管理器的宽度和高度

		LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);

		//设置布局方向(horizontal和vertical)

		layout.setOrientation(LinearLayout.VERTICAL);

		//设置textView组件的高和宽

		LinearLayout.LayoutParams txParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);

		//设置ImageView的高和宽

		LinearLayout.LayoutParams imgParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);

		//新建一个textview

		TextView tx = new TextView(this);

		//设置textview的布局参数

		tx.setLayoutParams(txParam);

		tx.setText("LinearLayout布局学习");

		tx.setTextColor(Color.RED);//设置颜色

		tx.setTextSize(20);//设置大小

		//增加组件

		layout.addView(tx);

		ImageView img = new ImageView(this);

		img.setLayoutParams(imgParam);

		img.setBackgroundResource(R.drawable.ic_launcher);//设置系统图标为显示图片

		layout.addView(img);

		super.addContentView(layout, param);

	}

}


其实上面的代码就等同于下面的xml文件:

 

 

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

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >



    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textColor="#ff0000"

        android:textSize="20sp"

        android:text="LinearLayout布局学习" />



    <ImageView

        android:id="@+id/imageView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:src="@drawable/ic_launcher" />



</LinearLayout>


这里说个要注意的问题就是,java代码中的setTextSize中传入的值是sp为单位,所以xml中也是20sp,而在getTextSize的时候是px值为单位,以后遇到不一样字体大小时不要忽略这个。

 



 

你可能感兴趣的:(LinearLayout)