例子一:
sublayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#505050"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SubLayout"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" A Button "
/>
</LinearLayout>
mail.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<include android:id="@+id/main1" layout="@layout/sublayout" />
<include android:id="@+id/main2" layout="@layout/sublayout" />
<Button
android:id="@+id/startanotheractivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Start Another Activity "
/>
</LinearLayout>
如何调用组件include进来的组件呢。
package com.AndroidIncludeLayout;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class AndroidIncludeLayout extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View subLayout1 = (View)findViewById(R.id.main1);
View subLayout2 = (View)findViewById(R.id.main2);
Button myButton_main1 = (Button)subLayout1.findViewById(R.id.mybutton);
Button myButton_main2 = (Button)subLayout2.findViewById(R.id.mybutton);
Button startAnotherActivity = (Button)findViewById(R.id.startanotheractivity);
startAnotherActivity.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(AndroidIncludeLayout.this, AnotherActivity.class);
startActivity(intent);
}});
myButton_main1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(AndroidIncludeLayout.this, "Button 1 Pressed", Toast.LENGTH_LONG).show();
}});
myButton_main2.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(AndroidIncludeLayout.this, "Button 2 Pressed", Toast.LENGTH_LONG).show();
}});
}
}
但是如果include进来的xml,是
sublayout.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SubLayout"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" A Button "
/>
</merge>
则以上的方法将不能实现,会报空指针。
因为用了merge后,导入进来就相当于是当前view下的组件了,所以直接
findViewById就可以了。
01.<?xml version="1.0" encoding="utf-8"?>
02.<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" style="@style/StyleLayoutMain" mce_style="@style/StyleLayoutMain"
03. xmlns:android="http://schemas.android.com/apk/res/android">
04.
05. <!-- include标签内不能设置RelativeLayout属性,如android:layout_alignParentBottom,因为不起作用 -->
06. <!-- include标签内设置id属性后(android:id),其引用的布局layout内的id属性就不起作用了,怀疑是其引用的layout外层包裹了一层include标签
07. 或者是覆盖了其内的属性id-->
08. <!-- 如果没有include标签,所有布局代码都写在一个xml文件中,界面会显得很冗余,可读性很差。而且界面加载的时候是按照顺序加载的,前面的布局不能
09. 调用其后面的布局id。而采用include后,一个include中可以引用其后的include中的布局id属性 -->
10. <include android:id="@id/titleLayout" layout="@layout/app_title" />
11.
12. <include layout="@layout/app_tradelogin"/>
13.
14. <include layout="@layout/app_bottom"/>
15.
16.</RelativeLayout>
相关推荐
在运行时,可以通过LayoutInflater来动态加载并替换`<include />`标签的内容。首先,获取`<include />`标签对应的View,然后调用`LayoutInflater`的`inflate()`方法。 ```java View includedView = findViewById(R....
- **动态加载**:通过Java代码动态地加载`<include>`中的布局,实现不同情况下的界面动态组合。 ### 3. `<include>`标签与`<merge>`标签的结合使用 在包含布局时,如果直接使用`<include>`,可能会引入额外的...
`include`标签是Android布局复用的重要工具,它允许开发者将一个布局文件嵌入到另一个布局文件中,从而减少代码重复,提高开发效率,并有助于维护。本篇文章将深入探讨`include`标签的使用方法及其注意事项。 ### 1...
本篇文章将详细讲解如何在Android项目中加载已有的.so库,以实现跨语言功能调用,提高应用性能。 首先,我们需要了解Android的NDK(Native Development Kit),它是一个让开发者在Android应用中使用C和C++代码的...
Android 本地加载 PDF 文件 Android 作为移动端操作系统,加载 PDF 文件是非常常见的需求。下面,我们将详细介绍 Android 本地加载 PDF 文件的相关知识,包括使用开源库、布局设计、文件下载和加载、对话框设计等...
在Android开发中,ViewStub是一个轻量级的控件,常用于实现动态加载和延迟加载。这个控件在默认情况下不占用布局空间,且不可见。只有当被 inflated(加载)时,它才会占据布局中的位置,并显示其中的视图。这种特性...
在Android开发中,`<include>`标签是一种非常实用的功能,它允许我们重用布局文件,提高代码的可维护性和减少冗余。通过`<include>`,我们可以将一个或多个组件组合到一个单独的布局文件中,然后在其他布局中进行...
`Include`布局是Android XML布局设计中的一个重要特性,它允许开发者将一个布局文件嵌入到另一个布局文件中,这样可以提高代码的复用性,减少重复编写相似布局的工作。例如,在多个页面都需要一个导航栏或者底部菜单...
`<include>`标签就是Android XML布局文件中一个非常实用的功能,它允许我们实现布局的复用,从而提高代码的可维护性和减少冗余。在这个“Include标签学习的demo”中,我们将深入探讨`<include>`标签的使用方法及其在...
关于Android加载状态视图切换,具体内容如下 1.关于Android界面切换状态的介绍 怎样切换界面状态?有些界面想定制自定义状态?状态如何添加点击事件?下面就为解决这些问题! 内容界面 加载数据中 加载数据...
这个示例“Android use JNI CALL include .h method sample”是关于如何在Android项目中使用JNI调用包含.h头文件的方法。下面将详细解释这个过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口...
在Java代码中,我们可以使用`System.loadLibrary("mylib")`来加载生成的SO库。注意,库名应去掉后缀`.so`。 在实际开发中,我们可能还需要处理JNI接口,即Java和C/C++之间的交互。这涉及到JNI头文件的生成和Java层...
A simple but powerful Tween / SpriteSheet / ParabolicMotion / animation library for Android TextureView and SurfaceView. Features The controls Fps possible to animation. Possible for animation of ...
- `include $(BUILD_SHARED_LIBRARY)`:编译生成动态库(.so文件),在运行时加载,可能依赖其他动态库。 - `include $(BUILD_EXECUTABLE)`:编译生成可执行程序,通常用于系统服务或命令行工具。 4. **编译模块...
在Android的Java代码中,我们需要创建一个与C函数对应的方法声明,并使用`System.loadLibrary()`加载.so库。例如: ```java public class MyActivity extends AppCompatActivity { static { System....
步骤5:加载.jar包 在AndroidManifest.xml中,添加`<uses-library>`标签指定需要的.jar包。如果.jar包含资源,还需要在`res/values/strings.xml`中声明资源。 步骤6:调用JNI函数 最后,在Qt的C++代码中,你可以...
本文将详细探讨如何在Android Studio中引用C语言,创建.so文件,并将其加载到项目中。 首先,为了在Android Studio中使用C/C++,我们需要开启对C/C++的支持。在项目根目录的`build.gradle`文件中添加以下依赖: ``...
Android官方提供了一些工具来优化布局管理,包括`include`、`merge`和`ViewStub`标签。这三个标签分别在不同的场景下发挥着重要作用,提高了代码的可读性和效率。 ### 1. `include`标签 `include`标签允许开发者将...
#include <android/log.h> #include extern "C" JNIEXPORT jstring JNICALL Java_com_example_yourapp_MainActivity_getMacAddress(JNIEnv *env, jobject /* this */) { std::string macAddress; // 获取MAC地址...
6. **整合到应用**:将生成的.so文件复制到你的应用的`jniLibs`目录下,这样当应用运行时,Android系统就能够找到并加载这个库。 7. **编写JNI代码**:在Java层,你需要创建一个JNI接口,通过`javah`工具自动生成...