初次接触Xamarin.Android.

由于国内Xamarin的资料少见,我大多参考JAVA原生代码,慢慢摸索过来。

我把摸索出来的结果广而告之,希望后来人能少走一点弯路,也希望你也能做出一份贡献。


如果你学会了RelativeLayout,那LinearLayout自然手到擒来。

动态添加学会了,静态添加还远吗?

1. 创建RelativeLayout

RelativeLayout Test = new RelativeLayout(this.Context);

2. 添加控件

2.1 基础添加

TextView TestText = new TextView(this.Context);
Test.AddView(TestText);

2.2 顶部添加 (底部添加等等类似)

RelativeLayout Test = new RelativeLayout(this.Context);
TextView TestText = new TextView(this.Context);
TestText.Text="我是1号";
RelativeLayout.LayoutParams TestTextRP = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WrapContent, RelativeLayout.LayoutParams.WrapContent);
TestTextRP.AddRule(LayoutRules.AlignParentTop);
Test.AddView(TestText,TestTextRP);

Android使用LayoutParams控制控件的空间布局。

而C#常用的布局是通过对控件的空间属性进行修改,这种设计思路在Android不适用了。

我不得不告诉你,如果你需要对控件布局参数进行修改,请务必使用LayoutParams。入乡随俗。

2.3 添加在另一个控件的后面

RelativeLayout Test = new RelativeLayout(this.Context);
TextView TestText = new TextView(this.Context);
TestText.Text = "我是1号";
RelativeLayout.LayoutParams TestTextRP = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WrapContent, RelativeLayout.LayoutParams.WrapContent);
TestTextRP.AddRule(LayoutRules.AlignParentTop);
Test.AddView(TestText,TestTextRP);
TextView NextText = new TextView(this.Context);
NextText.Text = "我是2号";
RelativeLayout.LayoutParams NextTextRP = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WrapContent, RelativeLayout.LayoutParams.WrapContent);
//注意这里
TestText.Id = View.GenerateViewId();
NextTextRP.AddRule(LayoutRules.Below,TestText.Id);
Test.AddView(NextText, NextTextRP);

测试图片:

这里面的关键点是给上一个控件的ID进行赋值。(我使用的是系统生成的值。你可以尝试其它值,如1,2,3..等等。)

如果你不赋值,那么实际效果是两个TextView将会重叠。

经过测试,每个控件的默认ID是-1.

2.4 待续

出自: https://www.cnblogs.com/nanyunan/p/9189057.html

Xamarin.Android RelativeLayout的更多相关文章

  1. Xamarin.Android通知详解

    一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android下的通知需要获取Notification ...

  2. Xamarin.Android之引导页的简单制作

    0x01 前言 对于现在大部分的APP,第一次打开刚安装或更新安装的APP都会有几个引导界面,通常这几个引导页是告诉用户 APP有些什么功能或者修改了什么bug.新增了什么功能等等等. 下面就用Xam ...

  3. Xamarin.Android之简单的抽屉布局

    0x01 前言 相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia) 今天就用Xamarin.Android实现个比较简单的抽屉布局.下面直接进正题. 0x ...

  4. Xamarin.Android之动画

    Translate动画 这个动画是最常使用到的,主要就是将控件从一个位置移动到另一个位置,并且还可以在这其中增加一定的效果,下面我们将采用两种方式实现动画,首选的是利用XML来制作动画,其次就是利用代 ...

  5. Xamarin.Android开发实践(八)

    Xamarin.Android其他类型的服务 一.前言 前面我们已经学了关于服务的很多知识,但是对于真实的开发那些远远不够,通过这节我们将学习其他类型的服务,比如前台服务.IntentService和 ...

  6. Xamarin.Android开发实践(六)

    Xamarin.Android通知详解 一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android ...

  7. Xamarin Android开发实战(上册)大学霸内部资料

    Xamarin Android开发实战(上册)大学霸内部资料   试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...

  8. [置顶] xamarin android自定义标题栏(自定义属性、回调事件)

    自定义控件的基本要求 这篇文章就当是自定义控件入门,看了几篇android关于自定义控件的文章,了解了一下,android自定义控件主要有3种方式: 自绘控件:继承View类,所展示的内容在OnDra ...

  9. [置顶] xamarin android Fragment实现底部导航栏

    前段时间写了篇关于Fragment的文章,介绍了基础的概念,用静态和动态的方式加载Fragment  Xamarin Android Fragment的两种加载方式.下面的这个例子介绍xamarin ...

随机推荐

  1. Sqoop导入关系数据库到Hive

    参考:segmentfault.com:Sqoop导入关系数据库到Hive Sqoop 是 apache 下用于 RDBMS 和 HDFS 互相导数据的工具.本文以 mysql 数据库为例,实现关系数 ...

  2. Django---Xss过滤以及单例模式

    Xss过滤 在表单填写的过程中我们就用到textarea,富文本编辑框,里面要用户输入相关的内容.如果有的人想要搞怪,在里面写一些js代码或者修改编辑的时候修改源代码,那提交上去之后就会使得页面显示不 ...

  3. lamp。查看版本

    [root@localhost ~]# php -vPHP 5.2.16 (cli) (built: Dec 17 2010 14:09:03) Copyright (c) 1997-2010 The ...

  4. LINQPad 4 初次使用心得

    最近学习EntityFramework,于是接触了LinqPad这款享誉已久的软件,深感相见恨晚.软件具体不多做介绍了,只简单介绍下使用方法. 数据库操作 添加数据库连接 1,首先通过点击Add co ...

  5. MyBatis ehcache二级缓存

    ehcache二级缓存的开启步骤: 1.导入jar 2.在映射文件中指定用的哪个缓存 3.加一个配置文件,这个配置文件在ehcache jar包中就有 使增删改对二级缓存不刷新: 对一级缓存没有用的, ...

  6. Unix高级编程Note1

    [Unix Notes] 1./etc/passwd 2.extern int errno; 3.限制, limit.h 4.文件原子操作:O_EXCL & O_CREAT 5.stat操作 ...

  7. Mysql,重复字段只取其中一行

    Mysql,重复字段只取其中一行 格式 : select 字段 from [表] where 其他字段 in (select 函数(其他字段) from [表] group by 相同字段) 示例如下 ...

  8. String对象不可改变的特性及内存机制

    JAVA中字符串类型String是不允许改变其内容的,下列语句是如何运行的:String s=new String("ABCD");s=s+"123": 最佳回 ...

  9. Stop单个Coroutine

    public Coroutine StartCoroutine(string methodName, object value = null); Description Starts a corout ...

  10. 转)GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以”为所欲为”, ...