`

android加载include

    博客分类:
  • UI
阅读更多

例子一: 
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>  

 

分享到:
评论

相关推荐

    android xml中include标签的使用

    在运行时,可以通过LayoutInflater来动态加载并替换`&lt;include /&gt;`标签的内容。首先,获取`&lt;include /&gt;`标签对应的View,然后调用`LayoutInflater`的`inflate()`方法。 ```java View includedView = findViewById(R....

    Android中Include的使用

    - **动态加载**:通过Java代码动态地加载`&lt;include&gt;`中的布局,实现不同情况下的界面动态组合。 ### 3. `&lt;include&gt;`标签与`&lt;merge&gt;`标签的结合使用 在包含布局时,如果直接使用`&lt;include&gt;`,可能会引入额外的...

    include 方法使用

    `include`标签是Android布局复用的重要工具,它允许开发者将一个布局文件嵌入到另一个布局文件中,从而减少代码重复,提高开发效率,并有助于维护。本篇文章将深入探讨`include`标签的使用方法及其注意事项。 ### 1...

    android项目中如何加载已有so库

    本篇文章将详细讲解如何在Android项目中加载已有的.so库,以实现跨语言功能调用,提高应用性能。 首先,我们需要了解Android的NDK(Native Development Kit),它是一个让开发者在Android应用中使用C和C++代码的...

    Android 如何本地加载pdf文件

    Android 本地加载 PDF 文件 Android 作为移动端操作系统,加载 PDF 文件是非常常见的需求。下面,我们将详细介绍 Android 本地加载 PDF 文件的相关知识,包括使用开源库、布局设计、文件下载和加载、对话框设计等...

    Android下使用ViewStub控件加载

    在Android开发中,ViewStub是一个轻量级的控件,常用于实现动态加载和延迟加载。这个控件在默认情况下不占用布局空间,且不可见。只有当被 inflated(加载)时,它才会占据布局中的位置,并显示其中的视图。这种特性...

    android使用include调用内部组件的方法

    在Android开发中,`&lt;include&gt;`标签是一种非常实用的功能,它允许我们重用布局文件,提高代码的可维护性和减少冗余。通过`&lt;include&gt;`,我们可以将一个或多个组件组合到一个单独的布局文件中,然后在其他布局中进行...

    [Android] 使用Include布局+Fragment滑动切换屏幕(源代码)

    `Include`布局是Android XML布局设计中的一个重要特性,它允许开发者将一个布局文件嵌入到另一个布局文件中,这样可以提高代码的复用性,减少重复编写相似布局的工作。例如,在多个页面都需要一个导航栏或者底部菜单...

    Include标签学习的demo

    `&lt;include&gt;`标签就是Android XML布局文件中一个非常实用的功能,它允许我们实现布局的复用,从而提高代码的可维护性和减少冗余。在这个“Include标签学习的demo”中,我们将深入探讨`&lt;include&gt;`标签的使用方法及其在...

    Android实现加载状态视图切换效果

    关于Android加载状态视图切换,具体内容如下 1.关于Android界面切换状态的介绍 怎样切换界面状态?有些界面想定制自定义状态?状态如何添加点击事件?下面就为解决这些问题! 内容界面 加载数据中 加载数据...

    Android use JNI CALL include .h method sample

    这个示例“Android use JNI CALL include .h method sample”是关于如何在Android项目中使用JNI调用包含.h头文件的方法。下面将详细解释这个过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口...

    AndroidStudio 编译C/C++文件生成SO文件

    在Java代码中,我们可以使用`System.loadLibrary("mylib")`来加载生成的SO库。注意,库名应去掉后缀`.so`。 在实际开发中,我们可能还需要处理JNI接口,即Java和C/C++之间的交互。这涉及到JNI头文件的生成和Java层...

    Android代码-Android TextureView 和SurfaceView 简单动画库

    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 ...

    android编译系统makefile(Android.mk)写法

    - `include $(BUILD_SHARED_LIBRARY)`:编译生成动态库(.so文件),在运行时加载,可能依赖其他动态库。 - `include $(BUILD_EXECUTABLE)`:编译生成可执行程序,通常用于系统服务或命令行工具。 4. **编译模块...

    Android利用.c文件生成So库

    在Android的Java代码中,我们需要创建一个与C函数对应的方法声明,并使用`System.loadLibrary()`加载.so库。例如: ```java public class MyActivity extends AppCompatActivity { static { System....

    Qt on Android调用Jar包

    步骤5:加载.jar包 在AndroidManifest.xml中,添加`&lt;uses-library&gt;`标签指定需要的.jar包。如果.jar包含资源,还需要在`res/values/strings.xml`中声明资源。 步骤6:调用JNI函数 最后,在Qt的C++代码中,你可以...

    jnitest 验证如何引用c语言加载到Android studio种

    本文将详细探讨如何在Android Studio中引用C语言,创建.so文件,并将其加载到项目中。 首先,为了在Android Studio中使用C/C++,我们需要开启对C/C++的支持。在项目根目录的`build.gradle`文件中添加以下依赖: ``...

    Android布局技巧之include、merge与ViewStub标签的巧用

    Android官方提供了一些工具来优化布局管理,包括`include`、`merge`和`ViewStub`标签。这三个标签分别在不同的场景下发挥着重要作用,提高了代码的可读性和效率。 ### 1. `include`标签 `include`标签允许开发者将...

    android jni获取 Mac地址

    #include &lt;android/log.h&gt; #include extern "C" JNIEXPORT jstring JNICALL Java_com_example_yourapp_MainActivity_getMacAddress(JNIEnv *env, jobject /* this */) { std::string macAddress; // 获取MAC地址...

    android libusb 已经成功编译拿去能用

    6. **整合到应用**:将生成的.so文件复制到你的应用的`jniLibs`目录下,这样当应用运行时,Android系统就能够找到并加载这个库。 7. **编写JNI代码**:在Java层,你需要创建一个JNI接口,通过`javah`工具自动生成...

Global site tag (gtag.js) - Google Analytics