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

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


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

效果如下:


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值为单位,以后遇到不一样字体大小时不要忽略这个。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值