代码下载:" />
当前位置: 代码迷 >> Android >> 代码下载:
  详细解决方案

代码下载:

热度:61   发布时间:2016-04-28 03:19:39.0
Android实习札记(11)---妙用include解决布局重用问题

Android实习札记(11)---妙用include解决布局重用问题

——转载请注明出处:coder-pig



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

①布局文件引入layout 

<include        android:id="@+id/topbar"        android:layout_width="match_parent"        android:layout_height="wrap_content"        layout="@layout/view_topbar" />
②Java代码中访问,获取layout中组件,设置属性:

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

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

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

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

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

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:

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:

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即可!

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



代码下载:

http://pan.baidu.com/s/1bnpjJhP








1楼tzr0330昨天 20:36
小猪,多介绍下开发中的一些技巧,希望你能加快更新速度。谢谢啦
Re: oSanYeCao12345671小时前
不错,写得蛮详细的!
  相关解决方案