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

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. 使用MYSQL命令直接导入导出SQL文件(转)

    参考:http://blog.csdn.net/jiary5201314/article/details/52026816 1.MYSQL中将数据库导出成SQL文件 其实很简单的,就是一条语句就可以了 ...

  2. solus系统配置

    #更新软件源 清华稳定源 sudo eopkg ar Tuna https://mirrors.tuna.tsinghua.edu.cn/solus/shannon/eopkg-index.xml 清 ...

  3. java设计模式图

    一.什么是设计模式                                                                                           ...

  4. 【java】java 中 byte[]、File、InputStream 互相转换

    ========================================================================= 使用过程中,一定要注意close()掉各个读写流!! ...

  5. 【内核研究】处理者_Handler

    虽然MessageQueue提供了直接读/写的函数接口.但对于程序猿来说,一般不直接读/写消息队列.之前了解到,在Looper.loop()函数中.当取出消息后,会回调msg.target对象的han ...

  6. 【paddle学习】图像分类

    https://zhuanlan.zhihu.com/p/28871960 深度学习模型中的卷积神经网络(Convolution Neural Network, CNN)近年来在图像领域取得了惊人的成 ...

  7. 进程间通信之-信号signal--linux内核剖析(九)

    信号及信号来源 什么是信号 信号是UNIX和Linux系统响应某些条件而产生的一个事件.接收到该信号的进程会对应地採取一些行动.通常信号是由一个错误产生的. 但它们还能够作为进程间通信或修改行为的一种 ...

  8. Mysql学习之十二:JDBC连接数据库之DriverManager方法

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包括7个步骤: 1.载入JDBC驱动程序: 在连接数据库之前.首先要载入想要连接的数据库的驱动到JVM(Java虚拟机). 这通过java.l ...

  9. 关于使用openfiler作为共享存储来安装rac时的问题

    关于使用openfiler作为共享存储来安装rac时的问题 第一:一定要使用openfiler-2.3-x86-disc1.iso这个版本号的openfiler,不要使用其它版本号的openfiler ...

  10. java:[1,0] illegal character: \65279 问题

    部署项目的时候报下面错误 [java] view plaincopyprint? java:[1,0] illegal character: \65279 java:[1,10] class, int ...