您的位置:首页 > 移动开发 > Android开发

初级教程之 七 Include(复用layout)的使用方式(二)

2017-01-26 19:58 603 查看
本篇文章主要讲解的是之前文章的不足之处,因为之前的第一种方式并不完善,所以固在此篇文章为大家带入更清晰的使用方式,注释已经详细为大家解答,敬请阅读。

第一篇文章地址:http://blog.csdn.net/qq_20451879/article/details/54288317

简单结构组成:

1.MainAcitivity与其XML

2.复用的Layout XML

MainActivity code:

package com.example.includeall;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

private TextView mSecound;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一种方式的进阶版使用针对在主layout多次复用layout的处理方式

//第一个复用layout的使用
// 首先获取当前布局的Layout id,这里我们直接返回View!!!因为我们并不确定我们当前复用的layout就是TextView等
View mMain = findViewById(R.id.main_text);
// 之后通过之前获取的id再次获取Include layout的 id
TextView mInculde = (TextView) mMain.findViewById(R.id.include_text);
// 如果我们只是获取当前复用layout的id控件操作,是会报错的
// mMain.setText("xxxxx");
mInculde.setText("在主Layout操作Inclue的Layout,与我们之前的直接查找复用Layout中的id效果是一样的!");

//第二个复用layout的使用

mSecound = (TextView) findViewById(R.id.secound_text).findViewById(R.id.include_text);
mSecound.setText("在同一个布局,复用了俩次相同的子布局页面, 我们需要通过双重tag操作");
mSecound.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getApplication(), "执行自己的相关逻辑操作", 0)
.show();
}
});

/**此为复用layout的直接id,---目前发现只给复用的第一个layout显示相关的操作!!!*/
TextView mTwo = (TextView) findViewById(R.id.include_text);
mTwo.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getApplication(), "使用之前的第二种方式操作,效果一样没有区别对待,实现的效果都建立在第一个视图之上", 0)
.show();
}
});
/**
* 注意点:
* -此文的双重tag。及为俩次find id后的控件
* 1.首先复用的layout注意布局,外部布局一般高度都是wrop的。不然你会发现显示不全
* 2.如果我们复用的layout只在当前布局复用一次的话,可以直接find到复用 layout的布局的id直接处理逻辑
* 3.反之如果我们在当前布局,多次复用layout我们就需要通过双重tag获得具体事件操作
* */

}
}


MainActivity Layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<include
android:id="@+id/main_text"
layout="@layout/include_layout"
/>
<include
android:id="@+id/secound_text"
layout="@layout/include_layout"
/>

</LinearLayout>


Inclde Layout(我们要复用的视图):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/include_text"
android:text="复用 Layout"
android:layout_gravity="center"
/>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息