您的位置:首页 > 产品设计 > UI/UE

New UI-<include>标签解决布局重用问题

2016-01-12 00:24 465 查看
New UI-<include>标签解决布局重用问题

 ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!



小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的

力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文

更加的详尽,帮到更多的人,O(∩_∩)O谢谢!



小猪Android开发交流群:小猪Android开发交流群群号:421858269

新Android UI实例大全目录:http://blog.csdn.net/coder_pig/article/details/42145907

如果你已经知道include是什么,只是想知道怎么用,使用示例如下:

①布局文件引入layout 

[html] view
plaincopyprint?





<include  

        android:id="@+id/topbar"  

        android:layout_width="match_parent"  

        android:layout_height="wrap_content"  

        layout="@layout/view_topbar" />  

②Java代码中访问,获取layout中组件,设置属性:

[java] view
plaincopyprint?





private View topbar;  

private TextView txtTitle;  

  

topbar = findViewById(R.id.topbar);  

txtTitle = (TextView) topbar.findViewById(R.id.txtTitle);  

txtTitle.setText("第二页");  

就这么简单,你可以关页面了,觉得帮助了你,可以点个赞!



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果不知道,想了解相关以及应用场景请继续看:

本节流程图:



效果图:



代码思路:

核心是顶部的一个titlebar,这里是我们自己写的一个bar,因为后面两个Activity都需要用到,

所以我们直接通过include包含这个bar,然后Java代码中获得该bar实例,再调用bar.findViewById

找到标题栏的TextView修改对应的页面!

详细代码如下:

顶部的bar: view_topbar.xml

[html] view
plaincopyprint?





<?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"  

    android:background="#000000" >  

  

    <ImageView  

        android:id="@+id/imgBack"  

        android:layout_width="40dp"  

        android:layout_height="40dp"  

        android:background="@drawable/back" />  

  

    <TextView  

        android:id="@+id/txtTitle"  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:layout_centerHorizontal="true"  

        android:layout_marginTop="8dp"  

        android:textColor="#FFFFFF"  

        android:textSize="20sp" />  

  

</RelativeLayout>  

接着依次编写三个Activity的布局,二三个activity通过include导入topbar
activity_main.xml:

[html] view
plaincopyprint?





<RelativeLayout 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:background="#D1E5E6"  

    tools:context="com.jay.example.includedemo.MainActivity" >  

  

    <Button  

        android:id="@+id/btnTo"  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:layout_centerInParent="true"  

        android:text="跳轉到第二個頁面" />  

  

</RelativeLayout>  

activity_second.xml:

[html] view
plaincopyprint?





<RelativeLayout 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:background="#D5E094" >  

  

    <include  

        android:id="@+id/topbar"  

        android:layout_width="match_parent"  

        android:layout_height="wrap_content"  

        layout="@layout/view_topbar" />  

  

    <Button  

        android:id="@+id/btnTo"  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:layout_centerInParent="true"  

        android:text="跳轉到第三個頁面"  

        android:textSize="14sp" />  

  

</RelativeLayout>  

activity_third.xml:

[html] view
plaincopyprint?





<RelativeLayout 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:background="#F2CC9F" >  

  

    <include  

        android:id="@+id/topbar"  

        android:layout_width="match_parent"  

        android:layout_height="wrap_content"  

        layout="@layout/view_topbar" />  

  

    <TextView  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:layout_centerInParent="true"  

        android:text="第三個頁面" />  

  

</RelativeLayout>  

编写对应的activity:

MainActivity.java:

[java] view
plaincopyprint?





package com.jay.example.includedemo;  

  

import android.app.Activity;  

import android.content.Intent;  

import android.os.Bundle;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.Button;  

  

public class MainActivity extends Activity {  

    private Button btnTo;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

        getViews();  

        setViews();  

    }  

  

    private void getViews() {  

        btnTo = (Button) findViewById(R.id.btnTo);  

    }  

  

    private void setViews() {  

        MyClick myClick = new MyClick();  

        btnTo.setOnClickListener(myClick);  

  

    }  

  

    // 定义事件处理类  

    private class MyClick implements OnClickListener {  

        @Override  

        public void onClick(View v) {  

            switch (v.getId()) {  

            case R.id.btnTo:  

                Intent it = new Intent(MainActivity.this, SecondActivity.class);  

                startActivity(it);  

                break;  

            }  

  

        }  

    }  

}  

SecondActivity.java:

[java] view
plaincopyprint?





package com.jay.example.includedemo;  

  

import android.app.Activity;  

import android.content.Intent;  

import android.os.Bundle;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.Button;  

import android.widget.ImageView;  

import android.widget.TextView;  

  

public class SecondActivity extends Activity {  

    private View topbar;  

    private ImageView imgBack;  

    private TextView txtTitle;  

    private Button btnTo;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_second);  

        getActionBar().hide();  

        getViews();  

        setViews();  

    }  

  

    private void getViews() {  

        topbar = findViewById(R.id.topbar);  

        btnTo = (Button) findViewById(R.id.btnTo);  

        imgBack = (ImageView) topbar.findViewById(R.id.imgBack);  

        txtTitle = (TextView) topbar.findViewById(R.id.txtTitle);  

    }  

  

    private void setViews() {  

        MyClick myClick = new MyClick();  

        txtTitle.setText("第二页");  

        btnTo.setOnClickListener(myClick);  

        imgBack.setOnClickListener(myClick);  

    }  

  

    // 定义事件处理类  

    private class MyClick implements OnClickListener {  

        @Override  

        public void onClick(View v) {  

            switch (v.getId()) {  

            case R.id.btnTo:  

                Intent it = new Intent(SecondActivity.this, ThirdActivity.class);  

                startActivity(it);  

                break;  

            case R.id.imgBack:  

                finish();  

                break;  

            }  

  

        }  

    }  

}  

ThirdActivity.java:

[java] view
plaincopyprint?





package com.jay.example.includedemo;  

  

import android.app.Activity;  

import android.os.Bundle;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.ImageView;  

import android.widget.TextView;  

  

public class ThirdActivity extends Activity {  

    private View topbar;  

    private ImageView imgBack;  

    private TextView txtTitle;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_third);  

        getActionBar().hide();  

        getViews();  

        setViews();  

    }  

  

    private void getViews() {  

        topbar = findViewById(R.id.topbar);  

        imgBack = (ImageView) topbar.findViewById(R.id.imgBack);  

        txtTitle = (TextView) topbar.findViewById(R.id.txtTitle);  

    }  

  

    private void setViews() {  

        MyClick myClick = new MyClick();  

        txtTitle.setText("第三页");  

        imgBack.setOnClickListener(myClick);  

    }  

  

    // 定义事件处理类  

    private class MyClick implements OnClickListener {  

        @Override  

        public void onClick(View v) {  

            switch (v.getId()) {  

            case R.id.imgBack:  

                finish();  

                break;  

            }  

  

        }  

    }  

}  

最后再配置文件注册下二三两个Activity即可!

[html] view
plaincopyprint?





<activity android:name=".SecondActivity"></activity>  

     <activity android:name=".ThirdActivity"></activity>  

代码下载:

http://pan.baidu.com/s/1bnpjJhP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: