android布局include
㈠ android 除了include还有其他复用布局的方法么
尽管Android通过内置了各种各样的控件提供了微小、可复用的交互性元素,也许你需要复用较大的
组件 ---- 某些特定布局文件 。为了更有效率复用的布局文件,你可以使用<include />以及<merge />
标签将其他的布局文件加入到当前的布局文件中。
复用布局文件是一种特别强大的方法,它允许你创建可复用性的布局文件。例如,一个包含“Yse”or“No”的
Button面版,或者是带有文字说明的 Progressbar。复用布局文件同样意味着你应用程序里的任何元素都能从
繁杂的布局文件提取出来进行单独管理,接着你需要做的只是加入这些独立的布局文件(因为他们都是可复用地)。
因此,当你通过自定义View创建独立的UI组件时,你可以复用布局文件让事情变得更简单。
1、创建一个可复用性的布局文件
如果你已经知道复用布局的”面貌”,那么创建、定义布局文件( 命名以”.xml”为后缀)。例如,这里是一个来自
G- Kenya codelab 的布局文件,定义了在每个Activity中都要使用的一个自定义标题 (titlebar.xml):由于这些
可复用性布局被添加至其他布局文件中,因此,它的每个根视图(root View)最好是精确(exactly)的。
[java] view plainprint?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=”match_parent”
android:layout_height="wrap_content"
android:background="@color/titlebar_bg">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</FrameLayout>
2、使用<include />标签
在需要添加这些布局的地方,使用<include />标签 。 例如,下面是一个来自G-Kenya codelab的布局文件,
它复用了上面列出的“title bar”文件, 该布局文件如下:
[java] view plainprint?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:background="@color/app_bg"
android:gravity="center_horizontal">
<include layout="@layout/titlebar"/>
<TextView android:layout_width=”match_parent”
android:layout_height="wrap_content"
android:text="@string/hello"
android:padding="10dp" />
...
</LinearLayout>
你也可以在<include />节点中为被添加的布局文件的root View定义特别标识,重写所有layout参数即可(任何
以“android:layout_”为前缀的属性)。例如:
[java] view plainprint?
<include android:id=”@+id/news_title”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
layout=”@layout/title”/>
3、使用<merge />标签
当在布局文件中复用另外的布局时, <merge />标签能够在布局层次消除多余的视图元素。例如,如果你的
主布局文件是一个垂直地包含两个View的LinearLayout,该布局能够复用在其他布局中,而对任意包含两个View的
布局文件都需要一个root View(否则, 编译器会提示错误)。然而,在该可复用性布局中添加一个LinearLayout
作为root View,将会导致一个垂直的LinearLayout包含另外的垂直LinearLayout。内嵌地LinearLayout只能减缓
UI效率,其他毫无用处可言。
该复用性布局利用.xml呈现如下:
[java] view plainprint?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:background="@color/app_bg"
android:gravity="horizontal">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/>
</LinearLayout>
为了避免冗余的布局元素,你可以使用<merge />作为复用性布局文件地root View 。例如:
使用<merge />标签的布局文件:
[java] view plainprint?
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/>
</merge>
现在,当你添加该布局文件时(使用<include />标签),系统忽略< merge />节点并且直接添加两个Button去
取代<include />节点。
㈡ [Android] DataBinding 布局里include的databinding刷新不生效
xml布局中,通过include嵌入其他绑定ViewModel的databinding布局,如:
通过刷新headerVM中的ObservableField的方式刷新布局,发现更新未生效。
普通的控件,通过绑定ViewModel的ObservableField的方式,可以实时刷新,如:
更新数据后,重新绑定include的布局和ViewModel并执行databinding的executePendingBindings()方法。
㈢ android如何获得组件的父容器
Android中的每一个Activity都是有或多或少的view组成的,如果view没有层级和归属,每个view相互独立。那么管理起来就会很麻烦,于是有了view层级的概念,也就是子布局,父容器。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--人数显示和刷新按钮-->
<include layout="@layout/anfrag_title" />
<!--时间选择器-->
<include layout="@layout/anfrag_time_selector" />
<!--所有新增用户图表显示-->
<include layout="@layout/new_total_user_item" />
<!--新增付费用户图表显示-->
<include layout="@layout/new_vip_user_item" />
<!--新增免费用户图表显示-->
<include layout="@layout/new_free_user_item" />
<!--新增用户平台付费率图表显示-->
<include layout="@layout/new_pay_percent_item" />
</LinearLayout>
如上所述,LinearLayout就是相对的include的layout的父容器。
㈣ android studio嵌套布局怎么弄
首先activity_main采用的是RelativeLayout布局方式,然后通过include标签引入一个LinearLayout的布局文件。
建一个xml文件,取名twobtn.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="horizontal" >
<Button android:layout_width="0sp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/equal"/>
<Button android:layout_width="0sp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/clear"/>
</LinearLayout>
注意以上代码中的android:layout_weight属性。
然后在主layout文件中加入以下代码
<include
android:id="@+id/btn" layout="@layout/twobtn"
android:layout_below="@id/theTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="0sp"
android:layout_marginRight="0sp"/>
㈤ 很简单的送分题又来了,高手还不进来android如何动态include布局文件,答得好的追加100分
inflate函数可以见xml布局文件刷成view,然后java中获得activity的view的父节点,然后通过addview就可以动态加入你要的view了
㈥ 做安卓软件开发需要哪些工具
android是基于linux的,所以在ubuntu下是最好的。当然windows下面也是可以的。但是android的内核是基于linux的,并且通过终端进行各种操作,非常强大,也比cmd方便。
大致开发的环境是这样:ubuntu系统,以前是windows然后安装了ubuntu的虚拟机。android大部分的开发都是中间层到顶层的应用开发,所以基本上是java开发。
表配如下:1eclipse是开发java必备,也是android必备。(当然前提是先安装JDK1.6)
2下载android的SDK和ADT。这是android的开发必须的工具,adb、ddms、mksdcard、aapt,debug 必备
A安装完eclipse后,通过help=〉install new software把ADT安装好
B然后window=>preference设置好SDK的路径即可
㈦ Android布局优化的几种方式
1. include/merge
布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件。include适用于多个布局文件中存在相同的xml片段,比如说相同的标题栏、相同的广告栏、相同的进度栏等等。
2. ViewStub
在一个页面上根据不同条件展示不同的控件,我们常常会设置控件的可视属性,比如调用指定控件的setVisibility方法,若需展示则设置View.VISIBLE,若需隐藏则设置View.GONE。不过gone的控件只是看不到罢了,实际UI渲染时还是会被加载。要想事先不加载,在条件符合时才加载,就得用到标签ViewStub。
3. style样式
样式在res/values/styles.xml中定义,它适用于下面几种情况:
1、布局文件中存在多个具有相同风格的控件,比如说统一的文本框TextView,都是白底黑字、中号字体、居中显示,这时我们便可在styles.xml定义一种文本样式,然后在各文本框处声明它的style属性。好处一个是减少了布局文件的大小,另一个是方便以后统一修改风格。
2、某些控件在代码中声明时需要手工指定style,例如自定义对话框需要在构造函数中指定样式;另一个例子是弹窗PopupWindow在设置伸缩动画方法setAnimationStyle时需要指定动画样式。
3、定义页面的主题风格,然后应用到Activity页面。代码中设置主题可通过“setTheme(R.style.)”完成,布局中设置可在AndroidManifest.xml的activity节点下添加theme属性,如“android:theme=”@style/“”。
4. Theme主题
主题是一种特殊的样式,主题专用于页面,而样式一般运用于控件。主题定义一般放在themes.xml,样式定义一般放在styles.xml。
Android定义了一些系统主题,完整定义的参见sdk自带的themes.xml,常用的几种说明如下:
Theme.NoTitleBar : 不显示标题栏,即隐藏ActionBar
Theme.Light : 白色背景
Theme.Holo : 浅灰背景
Theme.Black : 黑色背景
Theme.Wallpaper : 壁纸
Theme.Translucent : 透明背景
Theme.Dialog : 对话框
Theme.Panel : 平板
Theme.InputMethod : 输入法
Theme.SearchBar : 搜索框