之前在布局中有很多问题也有很多经验,遗憾都没记下来。现在一点点记下一些东西。

1.外层用LinearLayout的话,常常把orientation设成vertical,

android:orientation="vertical"

同时,常常还要在LinearLayout里面加一句:

android:gravity="center_horizontal"

这两句配合的话才能使这个线性布局里面的控件实现垂直布局+水平居中。或者把第二句的center_horizontal改成center_vertical,就可以实现垂直居中。

需要注意的是,不要在这个线性布局里面的控件里(比如一个Button)加上面那句“android:gravity="center_horizontal"” ,因为android中布局里写的话常常是对子控件起作用的。

----------------------------

1.以前懂的,现在忘了,经过百度知道提问才回忆起来父容器的问题。“android:gravity="center_vertical" 只能使得文字在textview控件居中,并不能表示textview控件是居中的,这样在textview的父类布局器中再加上android:gravity="center_vertical"才行。”

 
2状态栏布局的时候遇到一个被压扁的图标,后来才发现原来是因为父容器用的方向是android:orientation="vertical"导致的。
 
3.在父容器android:orientation="horizontal"时,子容器android:gravity="right"失效,不能居右;解决办法是父控件用RelativeLayout,子控件android:layout_alignParentRight="true"。
 
 
http://zhidao.baidu.com/question/578763424.html?sort=6#answer-1454297761
 
--------14:20 08/05/2014-------
 
 
2.另外,学会了神奇的9.png。。left和top切割了拉伸区域,right和bottom切割了文字区域。具体戳这里
 
3.终于明白为什么他们的项目的drawable里有那么多xml文件,原来每一个不同风格的按钮的按下操作都是要单独覆写的。
而Button风格的覆写也很简单,不需要在styles.xml里定义,不需要引用style,而是直接用:
android:background="@drawable/login_btn"

这里login_btn是一个在drawable文件夹里定义的xml文件(注意这时候不能有相同名字的9.png文件,不然Console会报错说已经有这个drawable了),含有按下和没按下两种状态的背景:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/login_btn_focused" />
<item android:state_focused="true"
android:drawable="@drawable/login_btn_focused" />
<item android:drawable="@drawable/login_btn_bg" />
</selector>
除此之外可能还有别的样式需要在drawable里定义。具体戳这里
 
-----------May.9,2014-------------
今天有了一些制作9.png的心得。
 
 
比如上面这个图,刚做的,想用来实现一个左侧带有图标一个button,如下图:
 
 
left边的两个小点用于上下定位,让这个图标处于拉伸之后的正中央;Top边有一个点和一条线(那个点在左边圆角处,不仔细看看不见),用来让图标处于拉伸后的左侧。right和bottom两侧的两条线代表文字内容区域。bottom的线如果往右侧移动一些,文字就会往右定位。
 
另外,这个png图像像素不能太「高」,不然即使button用wrap_content来定义,这个按钮还是会很高,I mean,按钮显得很大。
 
还有,怎么感觉还是怪怪的呢,是不是icon离文字太远了。。等会改一下。
还有,我觉得每个按钮都用这样9.png方法定义风格的话,工作量实在略大。。如实我觉得把图标去掉也不错。。是否还有其他方法呢。
 
 
-------2015.11.20-------
今天遇到一个小tip,linearlayout下 android:layout_gravity="right"是无效的。下面是摘抄来的:

当作为父layout的LinearLayout的属性为android:orientation="vertical" 的时候,android:layout_gravity="?"这里设为横向的时候才能生效。比如:left,right,center_horizontal等

当作为父layout的LinearLayout的属性为android:orientation="horizental" 的时候,android:layout_gravity="?"这里设为纵向的时候才能生效。比如:top,bottom,center_vertical等;

关于布局(Layout)的一切的更多相关文章

  1. Duilib源码分析(五)UI布局—Layout与各子控件

    接下来,继续分析duilib之UI布局Layout,目前提供的布局有:VerticalLayout.HorizontalLayout.TileLayout.TabLayout.ChildLayout分 ...

  2. jquery easy ui 1.3.4 布局layout(4)

    4.1.easyui布局-layout 在easyui里面只有一种布局方式,layout(东.南.西.北.中)的布局方式,创建layout布局的方式如下: <div id="cc&qu ...

  3. [转]struct实例字段的内存布局(Layout)和大小(Size)

    在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...

  4. Extjs布局——layout: 'card'

    先看下此布局的特性: 下面演示一个使用layout: 'card'布局的示例(从API copy过来的)——导航面板(注:导航面板切换下一个或上一个面板实际是导航面板的布局--layout调用指定的方 ...

  5. jQuery Easy UI (适应屏幕分辨率大小)布局(Layout)

    一.jQuery Easy UI (适应屏幕分辨率大小)布局(Layout) 1.首先应用的是jquery-easyui-1.4 版本(版本不同,兼容性不同) 2.实现整个页面的布局( layout: ...

  6. WPF笔记(2.7 文字布局)——Layout

    原文:WPF笔记(2.7 文字布局)--Layout 这一节介绍的是文字布局的几个控件:1.TextBlock      最基本的文字控件可以配置5个Font属性.TextWraping属性,&quo ...

  7. ExtJs常用布局--layout详解(含实例)

    序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor ...

  8. sencha touch 入门系列 (九) sencha touch 布局layout

    布局用来描述你应用程序中组件的大小和位置,在sencha touch中,为我们提供了下面几种布局: 1.HBox: HBox及horizontal box布局,我们这里将其称为水平布局,下面是一段演示 ...

  9. 前端框架 EasyUI (2)页面布局 Layout

    在 Web 程序中,页面布局对应用程序的用户体验至关重要. 在一般的信息管理类的 Web 应用程序中,页面结构通常有一个主工作区,然后在工作区上下左右靠近边界的区域设置一些边栏,用于显示信息或放置一些 ...

  10. dojo布局(layout)

    使用BorderContainer和ContentPane实现布局 1.效果图如下: 2.HTML代码: <div id="appLayout" class="de ...

随机推荐

  1. SGU 乱乱开

    本解题报告 乱抄,乱写,随性随心,不喜多喷! SGU 142: 思路:一个string的字串不会超过2^20个,我们枚举出来就好了. 我出错点:数组RE #include<stdio.h> ...

  2. 老系统优化同步导入10w+Excel数据 秒级

    背景:老系统asp.net 2.0项目使用客户反应,某个业务每个月导入数据操作很慢,大致需要15-30分钟才会导入完毕: 分析:导入慢的原因:  .数据量过大,且采用的是同步,单个excel shee ...

  3. android 获得屏幕状态

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

  4. scp操作实例

    scp 可用于文件的上传与下载,默认端口号是22,通常我们为了安全起见会将默认端口号修改了,而不去直接使用默认的22端口,以下我们以8888端口为例 目标机器 A :192.168.10.30 目标机 ...

  5. Tar压缩文件

    [root@test /root]# tar [-zxcvfpP] filename   [root@test /root]# tar -N 'yyyy/mm/dd' /path -zcvf targ ...

  6. Mac电脑解压文件unrar用密码问题解决

    下载了一个rar文件,有密码的,你懂的. 但是在mac上面,用unrar解压,只能解出空文件:用izip解压,直接停在那里不动. 只好上网搜索.找到了办法. 用brew 安装了命令行版本的 unrar ...

  7. Linux服务器同步网络时间

    Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步. ...

  8. C标准提前定义宏,调试时加打印非常实用

    #include<stdio.h> int main(int argc, char *argv[]) { printf("File:[%s]\r\n", __FILE_ ...

  9. uml精粹——10.状态机图

    10.状态机图state machine diagram   状态机图是常见的描写叙述一个系统行为的技术. 在面向对象的方法中,为单个类绘制一个状态机图来展示单个对象的生命周期行为. 见图10.1 图 ...

  10. 谜题 之 C语言

    本篇文章展示了14个C语言的迷题以及答案.代码应该是足够清楚的,并且我也相信有相当的一些样例可能是我们日常工作可能会见得到的.通过这些迷题,希望你能更了解C语言.假设你不看答案.不知道是否有把握回答各 ...