抽象布局

第七天

include

include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。

include可以达到重用布局的效果。但是如果不设置位置信息比较难看,要想设置include标签的布局,必须先设置宽高.
如果id起冲突了,那么默认本layout的控件id为响应id,include导入的控件id会被覆盖掉

 <!--include可以达到重用布局的效果。但是如果不设置位置信息比较难看要想设置include标签的布局,必须先设置宽高.
 如果id起冲突了,那么默认本layout的控件id为响应id,include导入的控件id会被覆盖掉-->
 <?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="match_parent"
    >
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击没反应"/>
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/button"
        android:layout_marginLeft="20px"
        android:text="站长之家友情提供"/>

</RelativeLayout>
    <include
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/foollayout"
        android:layout_alignParentBottom="true"/>

merge

merge标签可用于两种典型情况
merge标签在UI的结构优化中起着非常重要的作用,它
可以删减多余的层级,优化UI。
merge多用于替换FrameLayout或者当一个布局包含另
一个时,标签消除视图层次结构中多余的视图
组。例如你的主布局文件是相对布局,引入了一个相对布
局的include,这时如果include布局使用的RelativeLayout
就没意义了,使用的话反而减慢你的UI表现。这时可以使
用“merge/>”标签优化。
这里写图片描述

ViewStub

    viewstub标签同include标签一样可以用来引入一个外部布局,不同的是,viewstub引入的布局默认不会扩张,即既不会占用显示也不会占用位置,从而在解析layout时节省cpu和内存。
    viewstub常用来引入那些默认不会显示,只在特殊情况下显示的布局,如进度布局、网络失败显示的刷新布局、信息出错出现的提示布局等。

这里写图片描述

**java代码控制Viewstub显示的方法:inflate();
注意:ViewStub目前不支持merge标签**
这里写图片描述

自定义标题栏

如何使用自定义标题栏?

使用自定义标题栏遵循以下步骤:
一、自定义标题栏布局
二、在Activity中使用该布局
三、调整style使该布局和标题栏契合
四、让Activity使用该样式

1.自定义标题栏的布局文件
注意:在使用自定义标题栏时,首先需要创建一个标题栏的xml文件,并保证它的根标签是RelativeLayout

2.然后再在MainActivity中声明使用自定义的标题栏

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //此行代码必须加在setContentView之前,取消系统标题栏。
        this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.activity_main);

        //设置当前activity使用自定义标题栏
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title_layout);

注:如果在Androidstudio中切记把AppCompatActivity切换成Activity,这样才可以能运行

3.在Style属性中声明我们自定义的标题栏与默认的标题栏是否切合

 <!-- 在这里创建自己的style,用于系统主题的使用-->
    <style name="myTitleBar" parent="android:Theme">
        <!--设置原始标题栏的高度-->
        <item name="android:windowTitleSize">50dp</item>
        <!--设置新的标题栏完全原始标题栏的左右两侧-->
        <item name="android:padding">0dp</item>
    </style>

4.让我们的Activity使用该主题

在Manifest.xml中在< activity中填上一句theme=”@style/myTitleBar”

如果是在< application中填上一句theme=”@style/myTitleBar”那么所有的activity都会改变标题栏

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity"
            android:theme="@style/myTitleBar"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值