android排版布局学习
一、项目粮仓
粮仓学习:
liangcang:
启动页面:act_start.xml
toolbar: widget_foot_main_rgs.xml RadioButton
<RadioButton
android:id="@+id/main_bottom_shop"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="@string/rb_shop"
android:drawableTop="@drawable/slt_rb_shop"/>
android:padding="8dp"
android:textColor="@color/text_rb_main"
android:textSize="14sp" />
登录:login.xml
登录注册选择页:login_register.xml
顶部搜索:layout_sliding_list_header.xml
顶部后退+分享:widget_special_title.xml
底部TOOLBar:widget_foot_man.xml
6个大图片:fmt_gift.xml
1、Login.xml页面:
效果图
分析:
全局 一个RelativeLayout
顶部返回+标题+关闭 一个RelativeLayout
中间用户名、密码分别一个RelativeLayout
忘记密码和底部的登录直接两个BUTTON
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- 头部返回+标题+关闭 --> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="27.199982dip"> <ImageView android:id="@+id/back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="23.799988dip" android:src="@mipmap/back" /> <!-- mipmap-xxhdpi里的back.png图片 --> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="头部标题" android:textColor="@color/white" android:textSize="19.0sp" /> <ImageView android:id="@+id/close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="23.799988dip" android:src="@mipmap/chahao" /> </RelativeLayout> <!-- 用户名 --> <RelativeLayout android:id="@+id/username_layout" android:layout_width="fill_parent" android:layout_height="47.0dip" android:layout_marginLeft="35.799988dip" android:layout_marginRight="35.799988dip" android:layout_marginTop="83.79999dip" android:background="@drawable/stroke_white"> <!-- 注意此处不是stroke_white.png图片,是在drawable文件夹中的stroke_white.xml文件 内容见后面,设置的是用户名这行的外边框 --> <ImageView android:id="@+id/icon_user" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:padding="12.0dip" android:src="@mipmap/icon_user" /> <!-- 中间竖型分隔符 --> <View android:id="@+id/divider" android:layout_width="1.0dip" android:layout_height="30.0dip" android:layout_centerVertical="true" android:layout_toRightOf="@+id/icon_user" android:background="#ffffffff" /> <EditText android:id="@+id/userName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10.0dip" android:layout_marginRight="10.0dip" android:layout_toRightOf="@+id/divider" android:background="@android:color/transparent" android:hint="@string/login_namehint" android:singleLine="true" android:text="" android:textColor="@color/white" /> </RelativeLayout> <!-- 密码行 --> <RelativeLayout android:id="@+id/password_layout" android:layout_width="fill_parent" android:layout_height="47.0dip" android:layout_below="@+id/username_layout" android:layout_marginLeft="35.799988dip" android:layout_marginRight="35.799988dip" android:layout_marginTop="13.799988dip" android:background="@drawable/stroke_white"> <ImageView android:id="@+id/icon_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:padding="12.0dip" android:src="@mipmap/icon_password" /> <View android:id="@+id/divider2" android:layout_width="1.0dip" android:layout_height="30.0dip" android:layout_centerVertical="true" android:layout_toRightOf="@+id/icon_password" android:background="#ffffffff" /> <EditText android:id="@+id/password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10.0dip" android:layout_marginRight="10.0dip" android:layout_toRightOf="@+id/divider2" android:background="@android:color/transparent" android:hint="请输入密码" android:inputType="textPassword" android:drawableRight="@mipmap/eye_off" android:singleLine="true" android:text="" android:textColor="@color/white" /> <!-- @android:color/transparent 为colors.xml文件中的transparent --> </RelativeLayout> <Button android:id="@+id/forgetPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/password_layout" android:layout_below="@+id/password_layout" android:layout_marginTop="13.799988dip" android:background="@null" android:text="忘记了密码?" android:textColor="#ffffffff" /> <!-- android:background="@null" 表示背景透明 --> <Button android:id="@+id/login" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/password_layout" android:layout_marginLeft="35.799988dip" android:layout_marginRight="35.799988dip" android:layout_marginTop="50.5dip" android:background="#ff25292e" android:padding="10.0dip" android:text="登录" android:textColor="#ffffffff" android:textSize="17.799988sp" /> </RelativeLayout>
stroke_white.xml文件内容:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="1.1999817dip" android:color="#ffffffff" /> </shape>
2、login_register.xml页面
可以先从底部排列,底部定位好后依次往上。
页面:
布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- 底部第三方登录 改为RelativeLayout布局后图标缩到一块了 --> <LinearLayout android:id="@+id/third_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="33.799988dip" android:orientation="horizontal"> <ImageButton android:id="@+id/loginApp_tencentQQ" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="17.799988dip" android:background="@null" android:scaleType="center" android:src="@mipmap/app_tencent_qq" /> <ImageButton android:id="@+id/loginApp_weibo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="17.799988dip" android:background="@null" android:scaleType="center" android:src="@mipmap/app_weibo" /> <ImageButton android:id="@+id/loginApp_Douban" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="17.799988dip" android:background="@null" android:scaleType="center" android:src="@mipmap/app_douban" /> <ImageButton android:id="@+id/loginApp_tecentWeixin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:scaleType="center" android:src="@mipmap/app_tencent_weixin" /> </LinearLayout> <TextView android:id="@+id/social_login_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/third_login" android:layout_centerHorizontal="true" android:layout_marginBottom="19.199982dip" android:text="社交账号登录:" android:textColor="#ffffffff" android:textSize="13.799988sp" /> <Button android:id="@+id/login" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/social_login_text" android:layout_marginBottom="27.199982dip" android:layout_marginLeft="35.799988dip" android:layout_marginRight="35.799988dip" android:background="#ff25292e" android:padding="10.0dip" android:text="登录" android:textColor="#ffffffff" android:textSize="17.799988sp" /> <!-- 因为注册后面有个图标,所以得套个布局文件 --> <RelativeLayout android:id="@+id/register_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/login" android:layout_marginBottom="13.799988dip" android:layout_marginLeft="35.799988dip" android:layout_marginRight="35.799988dip"> <Button android:id="@+id/register" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffffff" android:padding="10.0dip" android:text="注册" android:textColor="#ff333333" android:textSize="17.799988sp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10.0dip" android:src="@mipmap/register_bonus" /> </RelativeLayout> <!-- 注册上面哪行靠右小字 --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/register_layout" android:layout_alignRight="@+id/register_layout" android:layout_marginBottom="2.0dip" android:layout_marginRight="-7.5dip" android:src="@mipmap/register_bonus_tip" /> <!-- LOGO图片 --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_gravity="center_horizontal" android:layout_marginTop="130.0dip" android:scaleType="fitXY" android:src="@mipmap/icon_large" /> <!-- 关闭 --> <ImageView android:id="@+id/close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="23.799988dip" android:layout_marginTop="27.199982dip" android:src="@mipmap/chahao" /> </RelativeLayout>
。。
3、顶部搜索:layout_sliding_list_header.xml
页面:
布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/behind_sliding_edit_bg"> <!-- 因为顶部都是搜索框,所以直接在布局中定义白色搜索框背景 --> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="horizontal"> <!-- 放大镜 --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/behind_sliding_search" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_gravity="center" android:text="@string/research_goods" android:textColor="@color/gray" android:textSize="@dimen/text_size_14sp" /> </LinearLayout> </RelativeLayout>
。。
4、顶部后退+分享:widget_special_title.xml
直接线性布局一个一个列下来
布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_title" android:layout_width="match_parent" android:layout_height="60dp" android:background="@color/black" android:orientation="horizontal"> <ImageView android:id="@+id/iv_special_title_left" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:src="@mipmap/actionbar_navigation_back"/> <TextView android:id="@+id/tv_special_title" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginLeft="30dp" android:gravity="center" android:singleLine="true" android:textColor="@color/gainsboro" android:textSize="@dimen/text_size_16sp" android:text="标题"/> <ImageView android:id="@+id/iv_special_title_like" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:layout_marginRight="5dp" android:src="@mipmap/topic_nofavour"/> <ImageView android:id="@+id/iv_special_title_right" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:layout_marginRight="5dp" android:src="@mipmap/forward"/> </LinearLayout>
。。。
5、Toolbar
注意颜色textColor、背景drawableTop分别是配在XML文件里,并且有选中和非选中两种
页面:
布局:
<?xml version="1.0" encoding="utf-8"?> <RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_rgs" android:layout_width="match_parent" android:layout_height="wrap_content" android:checkedButton="@+id/main_bottom_shop" android:orientation="horizontal"> <!-- android:checkedButton默认选中项的ID,此处为第一个 --> <RadioButton android:id="@+id/main_bottom_shop" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:button="@null" android:gravity="center" android:padding="8dp" android:textColor="@color/text_rb_main" android:textSize="14sp" android:text="@string/rb_shop" android:drawableTop="@drawable/slt_rb_shop"/> <!-- 注意此处android:drawableTop="@drawable/slt_rb_shop"中slt_rb_shop不为图片, 是在drawable文件夹下的slt_rb_shop.xml文件, 分别标明了此项选中和非选中时的图片, 内容如下 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@mipmap/shop_selected"/> <item android:state_checked="false" android:drawable="@mipmap/shop"/> </selector> 注意此处android:textColor="@color/text_rb_main" 为res/color文件夹中的 text_rb_main文件,分别标明了选中和非选中的文字颜色 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:color="@color/gray" /> <item android:state_checked="true" android:color="@color/gainsboro" /> </selector> --> <RadioButton android:id="@+id/main_bottom_magazine" style="@style/Widget.RadioButtonStyle" android:drawableTop="@drawable/slt_rb_mgz" android:text="@string/rb_magazine" /> <!-- 注意此处style="@style/Widget.RadioButtonStyle" 为公共样式,第一个提取出来为了分析属性 内容在values/文件夹下的styles.xml文件里,其他如第一个 <style name="Widget.RadioButtonStyle"> <item name="android:layout_width">0dp</item> <item name="android:layout_weight">1</item> <item name="android:layout_height">match_parent</item> <item name="android:button">@null</item> <item name="android:gravity">center</item> <item name="android:padding">8dp</item> <item name="android:textColor">@color/text_rb_main</item> <item name="android:textSize">@dimen/text_size_14sp</item> </style> --> <RadioButton android:id="@+id/main_bottom_share" style="@style/Widget.RadioButtonStyle" android:drawableTop="@drawable/slt_rb_share" android:text="@string/rb_share" /> <RadioButton android:id="@+id/main_bottom_master" style="@style/Widget.RadioButtonStyle" android:drawableTop="@drawable/slt_rb_master" android:text="@string/rb_master" /> <RadioButton android:id="@+id/main_bottom_my" style="@style/Widget.RadioButtonStyle" android:drawableTop="@drawable/slt_rb_my" android:text="@string/rb_persional" /> </RadioGroup>
6、相对定位学习:
页面:
布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <!-- TITLE --> <RelativeLayout android:layout_width="fill_parent" android:layout_height="40dp" android:orientation="horizontal" android:background="#225EF2" android:layout_marginTop="0dip"> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_gravity="center_vertical" android:layout_marginLeft="10dip" android:layout_marginTop="10dp" android:src="@mipmap/order_back" /> <TextView android:id="@+id/reg_title" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerInParent="true" android:gravity="center" android:textColor="#ffffff" android:textSize="16sp" android:text="确认抢单"/> </RelativeLayout> <!-- 车辆INFO--> <LinearLayout android:id="@+id/car_info_model" android:layout_width="match_parent" android:layout_height="30dp" android:gravity="center" android:orientation="horizontal" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="50dp" android:layout_marginBottom="5dp" android:background="@color/order_detail_model_bg"> <TextView android:id="@+id/car_info" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="0dp" android:gravity="center" android:singleLine="true" android:textColor="#333333" android:textSize="16sp" android:textStyle="bold" android:text="车辆信息"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" > <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="20.0dip" android:src="@mipmap/icon_more" /> </LinearLayout> </LinearLayout> <View android:id="@+id/divider1" android:layout_height="0.35dp" android:layout_width="match_parent" android:background="@color/order_detail_label" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_below="@+id/car_info_model" /> <!-- 本次学习的布局 --> <RelativeLayout android:id="@+id/car_detail" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="10dp" android:layout_marginBottom="5dp" android:layout_below="@+id/divider1" android:background="@color/order_detail_model_bg"> <!-- Line 1 --> <!-- 通过android:layout_alignParentLeft="true" android:layout_alignParentTop="true" 这两个布局定位后,其他依次layout_below、layout_toRightOf--> <TextView android:id="@+id/car_no_l" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_centerVertical="true" android:layout_marginLeft="0dip" android:layout_marginTop="5dp" android:layout_marginBottom="10dp" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="车牌号:"/> <TextView android:id="@+id/car_no" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/car_no_l" android:layout_marginTop="5dp" android:layout_marginBottom="10dp" android:gravity="center" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="深HB00000"/> <TextView android:id="@+id/car_type_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="100dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="5dp" android:layout_marginBottom="10dp" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="车型:"/> <TextView android:id="@+id/car_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="5dp" android:layout_marginBottom="10dp" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="重型版牵引车"/> <!-- Line 2 --> <TextView android:id="@+id/car_user_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="0dp" android:layout_below="@+id/car_no_l" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="司机:"/> <TextView android:id="@+id/car_user" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/car_user_label" android:layout_below="@+id/car_no_l" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="李吉海"/> <TextView android:id="@+id/car_user_tel_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="100dp" android:layout_alignParentRight="true" android:layout_below="@+id/car_type_label" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="手机:"/> <TextView android:id="@+id/car_user_tel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_alignParentRight="true" android:layout_below="@+id/car_type" android:textColor="@color/order_detail_label" android:textSize="14sp" android:text="13333333333"/> </RelativeLayout> </RelativeLayout>
7、线性布局学习
效果:
布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/nId" android:layout_width="wrap_content" android:layout_height="1dp" android:visibility="invisible"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="30dp" android:gravity="center" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_marginBottom="5dp" android:orientation="horizontal"> <TextView android:id="@+id/strFrom" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="5dp" android:gravity="center" android:singleLine="true" android:ellipsize="end" android:maxEms="7" android:textColor="#000000" android:textSize="14sp" android:text="通州煤矿"/> <View android:layout_height="1px" android:layout_width="30dp" android:background="#666666" /> <TextView android:id="@+id/strTo" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="5dp" android:gravity="center" android:singleLine="true" android:textColor="#000000" android:textSize="14sp" android:text="秋阳站台"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" > <TextView android:id="@+id/price" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginRight="10dp" android:gravity="center" android:layout_gravity="right" android:singleLine="true" android:textColor="#ff7200" android:textSize="16sp" android:text="43.00元/吨"/> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="20dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="0dp" android:layout_marginBottom="5dp" android:gravity="center" android:orientation="horizontal"> <TextView android:id="@+id/leftWeight" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="5dp" android:gravity="center" android:singleLine="true" android:textColor="#666666" android:textSize="12sp" android:text="剩余324.50吨"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right"> <TextView android:id="@+id/lift" android:layout_width="80dp" android:layout_height="match_parent" android:layout_marginLeft="0dp" android:layout_gravity="right" android:gravity="center" android:singleLine="true" android:textColor="#666666" android:textSize="12sp" android:text="最晚装货:"/> <TextView android:id="@+id/lastLiftTime" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginRight="0dp" android:layout_gravity="right" android:gravity="center" android:singleLine="true" android:textColor="#666666" android:textSize="12sp" android:text="2018-05-31 18 : 00 : 23"/> </LinearLayout> </LinearLayout> </LinearLayout>
。。。