控件类概述

View

可视化控件的基类

属性名称

对应方法

描述

android:background

setBackgroundResource(int)

设置背景

android:clickable

setClickable(boolean)

设置View是否响应单击事件

android:visibility

setVisibility(int)

控制View的可见性

android:focusable

setFocusable(boolean)

控制View是否可以获取焦点

android:id

setId(int)

为View设置标识符,可通过findViewById方法获取

android:longClickable

setLongClickable(boolean)

设置View是否响应长单击事件

android:soundEffectsEnabled

setSoundEffectsEnabled(boolean)

设置当View触发单击等事件时是否播放音效

android:saveEnabled

setSaveEnabled(boolean)

如果未作设置,当View被冻结时将不会保存其状态

android:nextFocusDown

setNextFocusDownId(int)

定义当向下搜索时应该获取焦点的View,如果该View不存在或不可见,则会抛出RuntimeException异常

android:nextFocusLeft

setNextFocusLeftId(int)

定义当向左搜索时应该获取焦点的View

android:nextFocusRight

setNextFocusRightId(int)

定义当向右搜索时应该获取焦点的View

android:nextFocusUp

setNextFocusUpId(int)

定义当向上搜索时应该获取焦点的View

ViewGroup

View的子类,但是它可以充当其他控件的容器

ViewGroup的子控件既可以是普通的View,也可以是ViewGroup。一些高级控件如Gallery、GridView等都是继承自ViewGroup。Android中为每种不同的布局提供一个ViewGroup的子类,如LinearLayout、TableLayout、RelativeLayout、FrameLayout、AbsoluteLayout等。

线性布局android.widget.LinearLayout

LinearLayout是最简单的布局之一,它提供了控件水平或垂直排列的模型,可以通过设置控件的weight参数控制各个控件在容器中的相对大小。LinearLayout布局的属性也是既可以通过布局XML文件设置,也可以通过成员方法进行设置。

LinearLayout常用的属性及对应设置方法

属性名称

对应方法

描述

android:orientation

setOrientation(int)

设置线性布局的朝向,可取horizontal和vertical两种排列方式

android:gravity

setGravity(int)

设置线性布局的内部元素的布局方式


gravity可取的属性及说明

属性值

说明

top

不改变控件大小,对齐到容器顶部

bottom

不改变控件大小,对齐到容器底部

left

不改变控件大小,对齐到容器左侧

right

不改变控件大小,对齐到容器右侧

center_vertical

不改变控件大小,对齐到容器纵向中央位置

center_horizontal

不改变控件大小,对齐到容器横向中央位置

center

不改变控件大小,对齐到容器中央位置

fill_vertical

若有可能,纵向拉伸以填满容器

fill_horizontal

若有可能,横向拉伸以填满容器

fill

若有可能,纵向横向同时拉伸填满容器


相对布局android.widget.RelativeLayout

奉献一个实例:
XML布局配置
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="left"
android:id="@+id/lls"
tools:context=".MainActivity" > <Button
android:id="@+id/button01"
android:text="@string/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
/> </RelativeLayout>

Activity

package com.example.android_layout;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
/**
* Button基本使用方法
* 1、添加Button控件到XMl布局文件中
* 2、给按钮一个id号,这是按钮唯一的名字
* 3、通过程序获取按钮
* 4、处理按钮点击
* ①第一种是通过onClick属性,通过这个属性设置处理点击事件的方法名,在Activity中实现这个方法。
* ②另一种方法是典型的事件监听机制的应用形式,使用setOnClickListener添加监听器对象
* @author liuxinming
*
*/
public class MainActivity extends Activity {
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取屏幕控件
Button button = (Button) findViewById(R.id.button01);
//添加
button.setOnClickListener(
new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//获取布局管理器
RelativeLayout ll = (RelativeLayout) findViewById(R.id.lls);
//动态创建button 对象
String msg = MainActivity.this.getString(R.string.app_name);
Button tempbutton = new Button(MainActivity.this);
tempbutton.setText(msg+(++count));
tempbutton.setId(count);
/**
* LayoutParams继承于Android.View.ViewGroup.LayoutParams.
* LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。
可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在4行4列,这里的“4行4列”就是棋子的LayoutParams。
*********
*RelativeLayout下动态设置子控件居中
*********
*/
RelativeLayout.LayoutParams buttonLayoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
buttonLayoutParams.addRule(RelativeLayout.BELOW,tempbutton.getId());
buttonLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
buttonLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
tempbutton.setLayoutParams(buttonLayoutParams);
ll.addView(tempbutton,buttonLayoutParams);
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

上面案例是布局一个按钮,然后通过Activity设置一个监听按钮事件,点击后添加一个新按钮出来

布局API属性比较多,简单弄了下,没有深入写,目前是添加的按钮全部覆盖起来了。哈哈
有需要的朋友,可以自己研究下属性,设置添加后的位置。
测试版本:Android4.3  API18

android开发4:Android布局管理器1(线性布局,相对布局RelativeLayout-案例)的更多相关文章

  1. Android布局管理器(线性布局)

    线性布局有LinearLayout类来代表,Android的线性布局和Swing的Box有点相似(他们都会将容器里面的组件一个接一个的排列起来),LinearLayout中,使用android:ori ...

  2. Android开发之通过包管理器获取安装应用信息

    最近在自己写一个APP,有一个模块需要获取手机应用的一些信息.坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的.底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安 ...

  3. Android UI组件:布局管理器

    为了更好的管理Android应用的用户界面中的组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常,推荐使用布局管理器来管理组件的分布. ...

  4. android中常用的布局管理器

    Android中的几种常用的布局,主要介绍内容有: View视图 RelativeLayout    相对布局管理器 LinearLayout     线性布局管理器 FrameLayout     ...

  5. Java可视化编程,基于布局管理器的UI设计

    在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...

  6. AWT03-LayoutManager布局管理器

    1.LayoutManager布局管理器 在之前的学习中,我们使用setBounds()方法设置容器的位置大小,但我们不得不明白一件事--如果我们手动为容器设置位置大小的话,就会造成程序通用性的下降. ...

  7. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  8. JAVA GUI布局管理器

    边界布局管理器: a.布局方式:是把整个容器划分为五个部分.东西南北中,南北要贯通,中间最大 (不仅是中间的范围最大,权利也最大)当周边不存在的时候中间会占领周边,当中间不存在的时候周边不能占据中间 ...

  9. AWT布局管理器

    布局管理器 容器内可以存放各种组件,而组件的位置和大小是由容器内的布局管理器来决定的.在AWT中为我们提供了以下5种布局管理器: ①   FlowLayout 流式布局管理器 ②   BorderLa ...

随机推荐

  1. birt报表中使用多个数据集。

    这个问题困扰了几天,也没搜到答案,由于工作需要,创建了两个数据集和两个表格,第一个数据集和表格之间没有任何问题.但是第二个数据集拖过去就显示不可用,除非拖到表格外面,当然也就没用了.一朋友说拖一个网格 ...

  2. 带A圈的秘密

    真嗒安全策略的罗罗,,害的我和其他的不一样.

  3. iOS使用阿里云OSS对象存储 (SDK 2.1.1)

    最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...

  4. 通过dbcp链接池对数据库操作报 Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)--解决方案

    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for ...

  5. java_reflect_02

    按我们所知道的.对于类中的method,constructor,field如果访问属性是private的情况下我们是访问不了的,但通过反射就可以做到 仔细分析api发现Method,Construct ...

  6. 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

    3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就 ...

  7. SecureCRT上使用公钥登陆Linux服务器

    SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择 ...

  8. w3wp异常

    相信做ASP.NET中大型Web应用的人都碰到过OutOfMemoryException这个异常,对于这个问题我研究了很久,在微软的技术文档上也了解过此问题出现的原因,说实话,到目前我仍然没有完美的解 ...

  9. 用soaplib的django webserver

    前面写过怎么利用suds来调用webservicePython调用基于https协议的SOAP WebService,这篇讲的是如何用soaplib开发SOAP WebService(最近发现国外开源 ...

  10. python 列表 字典 读写文件:pickle模块的基本使用

    python数据持久存储:pickle模块的基本使用(转载) 作者: pzxbc 出处: http://pzxbc.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保 ...