相信万能的baseadpter虽然好用,但是复杂的getview()方法的布局让人头疼,所以掌握一定的代码布局是很有必要的哦!
关于 android 常用布局,利用 XML 文件实现已经有很多的实例了。但如何利用代码实现呢?当然利用代码实现没有太大的必要,也是不提倡的,但我觉得利用代码实现这些布局,可以更好的了解 SDK API ,所以在此也整理一下,和大家分享一下。
首先看一下,布局所对应的类的 API 继承图:
所有的布局都会对应相关的类,这些类都是继承自 android.view.ViewGroup 类的。而 LinearLayout,RelativeLayout 都是在 android.widget 包里的。另外,TableLayout 是继承自 LinearLayout.
<wbr></wbr>
下面直接贴代码了。
// 利用代码设置线性布局
<wbr><wbr><wbr><span style="color:#2f3699">private void setLinearLayout(){<br><wbr><wbr><wbr><wbr>LinearLayout llayout = new LinearLayout(this);<br><wbr><wbr><wbr><wbr>llayout.setOrientation(LinearLayout.VERTICAL); <span style="color:#ff7e00">
// 设置线性布局的排列方式</span><br><wbr><wbr><wbr><wbr>TextView textView = new TextView(this);<br><wbr><wbr><wbr><wbr>textView.setText("代码实现的线性布局");<br><wbr><wbr><wbr><wbr>textView.setTextColor(Color.RED);<br><wbr><wbr><wbr><wbr>textView.setGravity(Gravity.CENTER); <span style="color:#ff7e00">
// 设置文本内容的对齐方式<br></span><wbr><wbr><wbr><wbr>LinearLayout.LayoutParams ll_lpara = new LinearLayout.LayoutParams(MP,WC);<br>
// <wbr><wbr><wbr><wbr>ll_lpara.gravity = Gravity.CENTER_HORIZONTAL; <span style="color:#ff7e00">
// 设置控件在布局中的对齐方式</span><br><wbr><wbr><wbr><wbr>llayout.addView(textView,ll_lpara);<br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>Button btn = new Button(this);<br><wbr><wbr><wbr><wbr>btn.setText("按钮");<br><wbr><wbr><wbr><wbr>llayout.addView(btn,ll_lpara); <span style="color:#ff7e00">
// 按指定属性添加控件<br></span><wbr><wbr><wbr><wbr>setContentView(llayout); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></wbr></wbr></wbr>
实现效果图:
=========================================================================
// 利用代码设置 相对布局
<wbr><wbr><wbr><span style="color:#2f3699">private void setRelativeLayout(){<br><wbr><wbr><wbr><wbr>RelativeLayout rlayout = new RelativeLayout(this);<br><wbr><wbr><wbr><wbr>rlayout.setPadding(10, 10, 10, 10); <span style="color:#ff7e00">
// 单位: pixels</span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>int textViewID = 100;<br><wbr><wbr><wbr><wbr>TextView textView = new TextView(this);<br><wbr><wbr><wbr><wbr>textView.setId(textViewID);<br><wbr><wbr><wbr><wbr>textView.setText("请输入:");<br><wbr><wbr><wbr><wbr>RelativeLayout.LayoutParams rl_lpara1 = new RelativeLayout.LayoutParams(MP, WC);<br><wbr><wbr><wbr><wbr>rlayout.addView(textView, rl_lpara1);<br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>int editTextID = 200;<br><wbr><wbr><wbr><wbr>EditText editText = new EditText(this);<br><wbr><wbr><wbr><wbr>editText.setId(editTextID);<br><wbr><wbr><wbr><wbr>editText.setBackgroundResource(android.R.drawable.editbox_background);<span style="color:#ff7e00">// 设置背景 , 同android:backgroumd<br></span><wbr><wbr><wbr><wbr>RelativeLayout.LayoutParams rl_lpara2 = new RelativeLayout.LayoutParams(MP, WC);<br><wbr><wbr><wbr><wbr>rl_lpara2.addRule(RelativeLayout.BELOW,textViewID); <span style="color:#ff7e00">
// 设置相对属性,需先指定相对控件的ID<br></span><wbr><wbr><wbr><wbr>rlayout.addView(editText, rl_lpara2); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>int backBtnID = 300;<br><wbr><wbr><wbr><wbr>Button backBtn = new Button(this);<br><wbr><wbr><wbr><wbr>backBtn.setId(backBtnID);<br><wbr><wbr><wbr><wbr>backBtn.setText("返回");<br><wbr><wbr><wbr><wbr>RelativeLayout.LayoutParams rl_lpara3 = new RelativeLayout.LayoutParams(WC, WC);<br><wbr><wbr><wbr><wbr>rl_lpara3.addRule(RelativeLayout.BELOW, editTextID);<br><wbr><wbr><wbr><wbr>rl_lpara3.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); <span style="color:#ff7e00">
// 设置与父控件的相对属性</span><br><wbr><wbr><wbr><wbr>rlayout.addView(backBtn, rl_lpara3);<br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>Button okBtn = new Button(this);<br><wbr><wbr><wbr><wbr>okBtn.setText("确定");<br><wbr><wbr><wbr><wbr>RelativeLayout.LayoutParams rl_lpara4 = new RelativeLayout.LayoutParams(WC, WC);<br><wbr><wbr><wbr><wbr>rl_lpara4.addRule(RelativeLayout.LEFT_OF, backBtnID);<br><wbr><wbr><wbr><wbr>rl_lpara4.addRule(RelativeLayout.ALIGN_TOP,backBtnID);<br><wbr><wbr><wbr><wbr>rlayout.addView(okBtn, rl_lpara4);<br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>setContentView(rlayout);<br><wbr><wbr><wbr>}<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span><span style="color:#000000">实现效果图:</span></wbr></wbr></wbr>
=========================================================================
// 利用代码设置表格布局
<wbr><wbr><wbr>private void setTableLayout(){<br><wbr><wbr><wbr><wbr>TableLayout tlayout = new TableLayout(this);<br><wbr><wbr><wbr><wbr>tlayout.setColumnStretchable(2, true); <span style="color:#ff7e00">
// <strong>拉长</strong>索引从0开始的第2列</span><br><wbr><wbr><wbr><wbr>TableLayout.LayoutParams tl_lpara = new TableLayout.LayoutParams(MP,WC);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><br><wbr><wbr><wbr><wbr><wbr><span style="color:#ff7e00">// 1. TableRow 不需要设置 layout_width, layout_height<br><wbr><wbr><wbr><wbr><wbr>// 2. TableRow 中的控件不能设置 layout_span 属性<br></wbr></wbr></wbr></wbr></wbr></span><wbr><wbr><wbr><wbr><wbr>TableRow tr1 = new TableRow(this); <wbr><br><wbr><wbr><wbr><wbr><wbr>TextView textView0 = new TextView(this);<br><wbr><wbr><wbr><wbr>textView0.setText("第0列");<br><wbr><wbr><wbr><wbr>tr1.addView(textView0); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>TextView textView1 = new TextView(this);<br><wbr><wbr><wbr><wbr>textView1.setText("第1列");<br><wbr><wbr><wbr><wbr>tr1.addView(textView1); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>TextView textView2 = new TextView(this);<br><wbr><wbr><wbr><wbr>textView2.setText("第2列");<br><wbr><wbr><wbr><wbr>textView2.setBackgroundColor(Color.CYAN);<br><wbr><wbr><wbr><wbr>tr1.addView(textView2); <wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>tlayout.addView(tr1, tl_lpara); <wbr><br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>TableRow tr2 = new TableRow(this);<br><wbr><wbr><wbr><wbr>Button btn0 = new Button(this);<br><wbr><wbr><wbr><wbr>btn0.setText("按钮0");<br><wbr><wbr><wbr><wbr>tr2.addView(btn0); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>Button btn1 = new Button(this);<br><wbr><wbr><wbr><wbr>btn1.setText("按钮1");<br><wbr><wbr><wbr><wbr>tr2.addView(btn1); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>Button btn2 = new Button(this);<br><wbr><wbr><wbr><wbr>btn2.setText("按钮2");<br><wbr><wbr><wbr><wbr>tr2.addView(btn2); <wbr><br><wbr><wbr><wbr><wbr>Button btn3 = new Button(this);<br><wbr><wbr><wbr><wbr>btn3.setText("按钮3");<br><wbr><wbr><wbr><wbr>tr2.addView(btn3);<br><wbr><wbr><wbr><wbr>tlayout.addView(tr2, tl_lpara);<br><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>setContentView(tlayout); <wbr><wbr><wbr><wbr><br><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
实现效果图:
分享到:
相关推荐
上一篇中我们介绍了自定义实现BaseAdapter的普通实现布局,然而上一章也说了普通实现的方式效率会很低,而且对系统开销也很大,所以,那样的实现是为了让初学者能知道可以这样使用,在实际项目中不可能使用那种方式...
Android流式布局,支持点击、单选、多选等,适合用于产品标签等,用法采用Adapter模式,和ListView、GridView用法一样!2016/6/26号新添加初始化标签功能,使用非常简单,只要你的Adapter实现OnInitSelectedPosition...
非常实用的baseadapter和抽象布局的结合,如果实用这套方案的话在实际开发过程中会省去不少事情,
在android的编程过程中,经常出现各种LiView的布局或者GridView之类的布局吗,这些布局都需要一个适配器,Adapetr的编程中,比如ViewHolder和convertView的编写会带来大量重复的代码,这个项目打造了一个万能适配器...
很简单,减少我们对代码的书写,下面开始上代码了。 MyAdapter.java public class MyAdapter extends BaseAdapter { private List<Student> data; public MyAdapter(List<Student> data) { this.data = data; }...
2.8 相对布局代码 11 2.9 FramLayout 帧布局 13 2.10 TableLayout 表格布局 14 2.11 AbsoluteLayout绝对布局 16 3.1 sp、dp、dip、pt、px等单位的区别 17 3.2 TextView属性 18 3.3跑马灯效果的最小代码集 19 3.4给...
Android Listview中显示不同的视图布局 1. 使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。convertView在Item为单一的同种类型布局时,能够回收并重用,但是多个...
代码如下:public class PersonAdapter extends BaseAdapter { private List persons;// 要绑定的数据 private int resource;// 绑定的一个条目界面的id,此例中即为item.xml private LayoutInflater inflater;// ...
4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与ListActivity的结合.. 4.22 加载手机磁盘里的图文件——使用...
能不能将自己通过代码创建的布局(如View,LinearLayout)等动态的布局到ListView呢?当然可以。 为了给ListView提供数据,我们需要为其设置一个适配,我们可以从BaseAdapter继承,然后重写它的getView方法,这个...
4、对BaseAdapter的使用 5、自定义Adapter 6、接口的回调 要实现下面的效果–当拖动ListView到底部的时候,显示一个ProgressBar和一个”正在加载…”的TextView。并且过两秒钟后,在下面加载出新的数据。项目的目录...
摘要:Java源码,Android源码,文件管理 基于Android源码实现的FileManager文件管理应用,使用BaseAdapter来存储取得的文件,源码中有丰富的注释,对android新手来说,帮助挺大。部分源码注释: super(context); /...
前面文章讲述的都是”随手拍”中图像处理的操作,此篇文章主要讲述GridView控件实现添加本地图片并显示.主要是关于GridView控件的基本操作,通常可以通过自定义继承BaseAdapter的适配器加载图片,... 界面布局详细代码 1
原理是根据功能需要生成代码文本,然后利用FileIO流写入到文件中。 最终生成的代码和手写基本一模一样,因此基本上无任何学习成本。 已有核心功能包括 AndroidUtils: 自动遍历layout布局文件,生成findViewById的代码 ...
微信聊天窗口的信息效果类似iphone上的短信效果,以气泡的形式展现,在Android上,实现这种效果主要用到ListView和BaseAdapter,配合布局以及相关素材,就可以自己做出这个效果,素材可以下一个微信的APK,然后把...
在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布局和自定义adapter了,一般是继承于BaseAdapter,示例代码见下方。写ListView的点击...
(1)将数据填充到布局。 (2)处理用户的选择点击等操作。 第一点很好理解,ListView就是实现这个功能的。第二点也不难做到,在后面的学习中读者会发现,这非常简单。 一个ListView的创建需要3个元素。 (1)...