Android UI优化之include标签的使用
在Android的官方文档中UI的优化主要涉及<include />、<merge />、<ViewStub />三类标签,本文主要讲解<include />的使用,其他两种见后文。
<merge />:http://blog.csdn.net/u012721519/article/details/51229291
<ViewStub />:http://blog.csdn.net/u012721519/article/details/51231469
在Android的开发工程中,一个良好的项目开发,不仅需要有良好的代码编写习惯,当然优化也必不可少,其中UI的优化也是其中的重要一部分,避免代码的冗余,是一个良好优秀的开发习惯和后期维护必不可少的内容之一。
<include />:
能够重用布局文件,把相同的代码写成一个单独的模块,在其他地方复用,减少代码的冗余。
注意:
可以单独使用layout属性,在<include />里定义ID属性,但在layout也定义了相关ID属性,则layout属性将会覆盖<include />属性。
也可在一个UI设计里面复用同一个<include />模块,但需注意设置LinerLayout相关方法,如下:
ll1 = (LinearLayout)findViewById(R.id.in1); tv1 = (TextView)ll1.findViewById(R.id.tv);
通过LinearLayout方法寻找id,否则会出现id复用的情况。
详细代码如下:
include.xml 复用布局文件
<?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="match_parent" android:orientation="vertical"><TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#FF0000" android:text="aa"/></LinearLayout>
activity_main.xml
<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" tools:context=".MainActivity" android:orientation="vertical"> <include android:id="@+id/in1" android:layout_width="100dp" android:layout_height="wrap_content" layout="@layout/include" /> <include android:id="@+id/in2" android:layout_width="fill_parent" android:layout_height="wrap_content" layout="@layout/include"/></LinearLayout>
复用了两次<include />,本人主要是用于测试使用。
MainActivity.java
package example.com.includetest;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private TextView tv1,tv2; private LinearLayout ll1 = null; private LinearLayout ll2 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initUI(); initData(); } private void initData() { tv1.setText("include 事件一"); tv2.setText("include 事件二"); tv2.setTextColor(Color.BLUE); } private void initUI() { ll2 = (LinearLayout)findViewById(R.id.in2); ll1 = (LinearLayout)findViewById(R.id.in1); tv1 = (TextView)ll1.findViewById(R.id.tv); tv2 = (TextView)ll2.findViewById(R.id.tv); }}
initData方法主要是用于测试,证明两个复用的<include />均可使用
运行效果如下:
源码下载地址:http://download.csdn.net/detail/u012721519/9500597
Good luck!
Write by Jimmy.li
更多相关文章
- Android:android.git.kernel.org 无法访问时下载源代码的解决方法
- 后台动态添加布局文件、控件与动态设置属性2
- TableLayout 属性的设置
- Android中使用AlarmManager需注意设置进程属性
- [Tools]Android Studio代码提示功能--Ctrl+Alt+Space(空格键)
- Android Layout 布局 && Android自带样式(theme)&& CheckBox样例 &
- Android 7.1.1中SystemProperties 设置属性无限问题分析
- Android学习心得(14) --- Android代码混淆(2)
- android 自定义xml属性