Android学习笔记之界面控件大小dip及布局管理器嵌套使用



 做Android也有三个星期了,但还没有做项目,一直在做一个练习的Android英语词典,在做的过程中也

遇到过很多问题,今天就来总结一下;因为问题比较多,就分类来总结吧……首先刚开始做的时候,肯

定是做界面啦,不过英语词典里面有一个卡片模式,搞得我很蛋疼,,因为我只知道用LinearLayout,

而用LinearLayout做出那个效果真的有点难,所以我研究了几天,也做了很多尝试,后来终于做出来了

Android学习笔记之界面控件大小dip及布局管理器嵌套使用

xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent" 
	android:background="@android:color/white"
	android:cacheColorHint="#000000" 
	android:layout_height="match_parent"
	android:orientation="vertical">
	<LinearLayout 
	    android:layout_height="wrap_content"
		android:orientation="vertical" 
		android:layout_width="match_parent"
		android:gravity="center">
		
		<TextView android:id="@+id/textView1" 
			android:textSize="30dip"
			android:layout_height="60dip" 
			android:gravity="center"
			android:textColor="#ffffff" 
			android:background="@color/cyan"
			android:layout_width="fill_parent" 
			android:text="必备单词"/>
			
		<LinearLayout android:layout_height="wrap_content"
			android:orientation="horizontal" 
			android:layout_width="match_parent"
			android:gravity="center">
			
			<TextView android:id="@+id/textView2"
			    android:text="课程重点:"	
				android:textColor="#000000" 
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"/>
				
			<Spinner android:id="@+id/spinner1"
			    android:layout_height="wrap_content"
				android:entries="@array/bibei"
				android:prompt="@string/srp_name"
				android:layout_width="200dip" />
				
		</LinearLayout>
		
		<LinearLayout 
		    android:layout_height="120dip"
			android:orientation="vertical" 
			android:gravity="right"
			android:layout_width="280dip">
			
			<RelativeLayout 
			    android:layout_height="120dip"
				android:orientation="horizontal" 	
				android:layout_width="280dip">
				
				<TextView android:id="@+id/wordView2"	
					android:textColor="#000000" 
					android:textSize="30dip"
					android:background="@drawable/bg_border"
					android:gravity="center|center_vertical"
					android:layout_width="280dip"
					android:layout_height="match_parent"/>
					
				<TextView android:id="@+id/sumView2"
				    android:text="0/0" 	
					android:textColor="#000000" 
					android:layout_alignParentRight="true"
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"/>
					
				<TextView android:id="@+id/textView7"
				    android:layout_width="wrap_content"
					android:visibility="gone" 
					android:layout_marginLeft="10dip"
					android:textColor="#ffffff" 	
					android:layout_height="wrap_content" 
					android:text=""/>
					
				<ImageView android:id="@+id/imageView1"
				    android:layout_height="wrap_content" 	 
					android:layout_alignParentLeft="true"
					android:layout_marginLeft="3dip"
					android:layout_marginTop="3dip"
					android:layout_width="wrap_content" 
					android:src="@drawable/qqqw"/>
					
				<LinearLayout 
			        android:layout_height="wrap_content"
				    android:orientation="vertical" 
				    android:layout_alignParentBottom="true"	
				    android:gravity="center"
				    android:layout_width="280dip">
				    
				    <ImageView android:id="@+id/imageShengyin"
				    android:layout_height="wrap_content" 	 
					android:layout_alignParentLeft="true"
					android:layout_width="wrap_content" 
					android:src="@drawable/suona"/>
				    
				</LinearLayout>
				
			</RelativeLayout>
			
		</LinearLayout>
		
		<LinearLayout 
		    android:layout_height="120dip"
			android:orientation="horizontal" 
			android:gravity="center"
			android:layout_width="280dip">
			
			<TextView android:id="@+id/enpView2" 
			    android:layout_height="match_parent" 	
				android:textColor="#000000" 
				android:textSize="20dip"
				android:background="@drawable/bg_border"
				android:gravity="center|center_vertical"
				android:text="" 
				android:layout_width="280dip"/>
				
			<TextView android:id="@+id/textID"
			    android:layout_width="wrap_content"
				android:visibility="gone" 
				android:layout_marginLeft="10dip"
				android:textColor="#ffffff" 
				android:layout_height="wrap_content" 
				android:text=""/>
				
		</LinearLayout>
		
		<SeekBar android:id="@+id/seekbar"
			android:layout_width="280dip" 
			android:layout_height="wrap_content" />
			
		<LinearLayout 
		    android:layout_height="wrap_content"
			android:orientation="horizontal" 
			android:gravity="center"
			android:layout_width="match_parent">
			
			<Button android:id="@+id/liubutton1"
			    android:layout_height="wrap_content" 
				android:text="自动浏览"
				android:layout_width="wrap_content" />
				
			<Button android:id="@+id/shangbutton1"
			    android:layout_height="wrap_content" 
				android:text="上一页"
				android:layout_width="wrap_content" />
				
			<Button android:id="@+id/xiabutton1"
			    android:layout_height="wrap_content" 
				android:text="下一页"
				android:layout_width="wrap_content" />
		</LinearLayout>
	
	</LinearLayout>
	
	<LinearLayout 
	    android:layout_height="wrap_content"
		android:orientation="vertical" 
		android:layout_width="match_parent">
		
		<Button android:id="@+id/button1"
		    android:layout_height="wrap_content" 
			android:text="返回"
			android:layout_width="80dip" />

	</LinearLayout>
	
	<LinearLayout 
	    android:layout_height="wrap_content"
		android:orientation="horizontal" 
		android:layout_alignParentBottom="true"
		android:layout_width="match_parent">
		
		<TextView android:id="@+id/kabView2"
		    android:text="卡片模式" 			
			android:textColor="#ffffff" 
			android:background="#2F4F4F"
			android:gravity="center|center_vertical"
			android:layout_width="160dip"
			android:layout_height="40dip" />
			
		<TextView android:id="@+id/lieView2"
		    android:text="列表模式" 			
			android:textColor="#ffffff" 
			android:background="#2F4F4F"
			android:gravity="center|center_vertical"
			android:layout_width="160dip"
			android:layout_height="40dip"/>
		
	</LinearLayout>
	
</RelativeLayout>

 有些命名什么的不规范,看得懂就行,界面也不好看,不过那是样式的问题了

灵活用LinearLayout和RelativeLayout嵌套使用,足可以应付你的界面了。比如你要一控件在你想要的

任何地方,用RelativeLayout的android:layout_marginTop(距离顶部多少多少)是可以,但界面不可

能就一个控件,有些控件不需要这样,当然就RelativeLayout绝对可以但很麻烦……所以我们可以给一

个LinearLayout让这个控件跟其他区域分清楚点,再在里面用RelativeLayout来布局,这样分块就会很

清晰。

好了,原先我的界面布出来了,在虚拟机里运行也很正常,但当我下到自己的手机安装的时候,哎呀!

那界面真是惨不忍睹啊,有些控件正常显示,有些被缩得跟头发一样(夸张了点),反正界面都变形了

……可以是做为Android新手的我不知道啊,后来问过前辈才知道……我用了

android:layout_height="50px"  ,用px来定大小的话很容易出错,因为它是根据像素来的,比如你画

160px的线在480*800像素的手机上就是1/3长,那么在320*480的手机上就是一半长了,如果这样的话,

就很尴尬了……但Android里有一个dip,用这个的话,在不同的设备会有不同的效果,我把它理解成是

根据比例来的(个人这样理解);就说我觉得比较容易理解的吧反正这样用没错啦:dip把手机统一假设

为是320*480像素的,1dip=1px,如果把宽设为160dip那么就是频幕宽的一半,不管是在320*480像素的,

还是480*800像素的等等,它都是频幕宽的一半,高也是这样啊。

可能你觉得我的废话比较多,但是看完一件事件的经过,会让你可以举一反三(也是在告诫我自己)。

相关推荐