文档章节

《android 编程权威指南》--CriminalIntent开发 【贰】

阮天波
 阮天波
发布于 2014/12/29 14:50
字数 888
阅读 37
收藏 0

上一次,我们已经对Fragment 有了大概的了解。

现在我们将CrimeFragment进行布局的添加。真正用于项目。

主要是进行


这里我们给Crime实体类添加两个变量,java.util.Date类型的mDate和布尔类型的mSolved

用于表示陋习记录的时间和是否更改陋习。

public class Crime {
	private UUID mUid;
	private String mTitle = "";
	private Date mDate;
	private Boolean Solved = false;
	
	/**省略get set方法*/

同时在布局中也添加一个Button和CheckBox

<Button
    android:id="@+id/crime_date"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:textSize="20sp"
    android:text="@string/submit"
    android:background="@drawable/submit"
    />
<CheckBox
    android:id="@+id/isSolved"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/isSolved"
    />

这边我门再给Button进行背景设置,在res/drawable下面创建submit.xml的安装文件

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="false">
        <shape>
            <!-- 实心 -->
            <solid android:color="#99ccff"/>
            <!-- 渐变 -->
            <!-- <gradient /> -->
            <!-- 描边 -->
            <!-- <stroke   /> -->
            <!-- 圆角 -->
            <!-- <corners  /> -->
            <!-- 边距 -->
            <!-- <padding  /> -->
        </shape>
    </item>
 </selector>

有关android:state

android 标签 描述
android:state_pressed
是否按下,如一个按钮触摸或者点击
android:state_focused 是否取得焦点,比如用户选择了一个文本框
android:state_hovered  光标是否悬停
android:state_selected 它与focus state并不完全一样,如一个list view 被选中的时候,它里面的各个子组件可能通过方向键,被选中了。
android:state_checkable 组件是否能被check。如:RadioButton是可以被check的
android:state_checked 被checked了,如:一个RadioButton可以被check了
android:state_enabled 能够接受触摸或者点击事件
android:state_activated 被激活
android:state_window_focused 应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了

如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用

效果如下:点击Button按钮后会显示颜色的变化。

但是如果将,屏幕旋转,效果将变化为button横跨整个屏幕,我们希望Button和CheckBox是各占整行的50%

为此我们再添加一个landscape(横向)布局

在res目录下右键,选择Android XML File

写入名字,要与原来纵向布局的名字一样。

选择纵向的

这样以后你会看到在res 目录下多出一个layout-land目录,表示在横向情况下用该布局文件。

修改横向布局,在原来checkBox和Button位置替换为一下代码

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
    <Button
        android:id="@+id/crime_date"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_weight="1"
        android:textSize="20sp"
        android:text="@string/submit"
        android:background="@drawable/submit"
        />
	<CheckBox
	    android:id="@+id/isSolved"
	    android:layout_weight="1"
	    android:layout_marginLeft="20dp"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="@string/isSolved"
	    />
	</LinearLayout>


书上有个图能够很好的表示android:layout_weight属性。android:layout_weight属性与android:layout:width属性相关(LinearLayout纵向条件下与android:layout:height相关)

如果Button和CheckBox的android:layout_width属性都为wrap_content,则空间分配如下,含有额外的空间(extra space)

然后给Button和CheckBox添加android:layout_weight="1"属性,则会将额外空间按1:1的比例分配给Button和CheckBox

如果android:layout_weight比例是2:1(Button 2,CheckBox 1)那么额外空间会按2;1进行分配

那么,如果想让Button和CheckBox总的空间分配各占一般怎么办呢?

可以在初始将android:layout_width="0dp",即在一开始不设置宽度,通过android:layout_weight进行空间分配。

这样我们完全控制了CrimeFragment在Portrait(纵向)和Landscape(横向)情况下的布局情况。纵向图在上面可以找到,横向图如下:


© 著作权归作者所有

阮天波
粉丝 1
博文 17
码字总数 2918
作品 0
绍兴
程序员
私信 提问
java学习路线及资源下载,持续整理中

学习路线图:http://blog.csdn.net/shenzhq1980/article/details/48470337 1、java学习经典书籍_基础编程篇 下载地址:http://blog.csdn.net/shenzhq1980/article/details/48375543 书籍: ......

迷茫80
2015/09/21
573
1
如何在Android设备旋转时暂存数据以保护当前的交互状态?

设备旋转时保存Activity的交互状态 旋转时数据为什么会丢失? 设备配置(device configuration)用以描述设备当前状态,包括:屏幕方向、屏幕密度、屏幕尺寸、键盘类型、语言等。配置若在运行...

li21
09/29
0
0
2016移动开发校赛之Android实践

学校组织的《移动互联网应用软件开发》技能竞赛,所有参赛命题均基于 Android 4.2 版本实现,比赛推荐使用的开发环境为:ADT, JDK 1.6, Android SDK 4.1   经过了四天的培训我们小组选择...

devops1024
2018/06/27
0
0
OSC 第 99 期高手问答 —— App 竞品技术分析

OSCHINA 本期高手问答( 11月17 日- 11月23日)我们请来了《App研发录》的作者 @包建强 来解答 App 竞品技术分析 方面的问题。 包建强 (ID:@包建强 )毕业于复旦大学数学系。先后在多家互联网...

叶秀兰
2015/11/17
4.7K
37
JavaScript(React Native、Node.js等)移动、服务端通吃的全栈语言

作者:李宁老师 东北大学计算机专业硕士。曾任沈阳东软股份项目经理。51CTO学院签约讲师。从事软件研究和开发超过20年。长久以来一直从事Java、Android、iOS、C++、Swift、Objective-C以及跨...

androidguy
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java FOR-EACH循环

FOR-EACH循环使得代码更加的简短,也让代码更加易懂,其实他并没有加入什么新的功能。他的功能完全可以用简单的FOR循环代替。 for-each的用法: int a[] = {1,2,3,4,5,6} for(int s:a){ Syst...

无名氏的程序员
26分钟前
3
0
使用HTML5的History API

本文转载于:专业的前端网站➣使用HTML5的History API   HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL。这个功能很有用,例如通过一段JavaScript代...

前端老手
28分钟前
4
0
JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
今天
7
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
今天
100
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部