测试8.5

转载 2017年08月05日 17:21:43
介绍
--

ViewStub 是一个轻量级的View,没有尺寸,不绘制任何东西,因此绘制或者移除时更省时。(ViewStub不可见,大小为0)

优点
--

实现View的延迟加载,避免资源的浪费,减少渲染时间,在需要的时候才加载View

缺点
--

ViewStub所要替代的layout文件中不能有`<merge>`标签
ViewStub在加载完后会被移除,或者说是被加载进来的layout替换掉了
用法

```
<ViewStub
    android:id="@+id/stub_import"
    android:inflatedId="@+id/panel_import"
    android:layout="@layout/progress_overlay"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom" />


```
用ViewStub加载layout文件时,可以调用 setVisibility(View.VISIBLE) 或者 inflate()

```
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

```

注意
--

 - 一旦ViewStub visible/inflated,则ViewStub将从视图框架中移除,其id stub_import 也会失效
 - ViewStub被绘制完成的layout文件取代,并且该layout文件的root view的id是android:inflatedId指定的id panel_import,root view的布局和ViewStub视图的布局保持一致

```
<!-- layout_viewstub.xml 要延迟加载的view -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/layout_viewstub_old"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@android:color/darker_gray"
        android:padding="5dp"
        android:text="This is the layout instead of ViewStub view."/>

</LinearLayout>


```

```
<!-- act_test_viewstub.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:gravity="center_horizontal"
    android:orientation="vertical">

    <TextView
        android:id="@+id/act_test_viewstub_tv_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@android:color/darker_gray"
        android:padding="5dp"
        android:text="Show ViewStub"/>

    <ViewStub
        android:id="@+id/act_test_viewstub_viewstub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inflatedId="@+id/act_layout_viewstub_new"
        android:layout="@layout/layout_viewstub"/>

    <!--<include-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--layout="@layout/layout_viewstub"/>-->

</LinearLayout>


```

```
public class ViewStubTestActivity extends FragmentActivity {
    private static final String TAG = "test_viewstub";
    protected ViewStub mViewStub;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.act_test_viewstub);
        mViewStub = (ViewStub) findViewById(R.id.act_test_viewstub_viewstub);

        Log.e(TAG, "viewstub: " + findViewById(R.id.act_test_viewstub_viewstub));
        Log.e(TAG, "layout: " + findViewById(R.id.act_layout_viewstub_new));

        findViewById(R.id.act_test_viewstub_tv_show).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                View layoutView;
//                mViewStub.setVisibility(View.VISIBLE);
                layoutView = mViewStub.inflate();

                Log.e(TAG, "mViewStub: " + mViewStub);
                // ViewStub在visible/inflated后会被移除,所以此处为null
                Log.e(TAG, "viewstub: " + findViewById(R.id.act_test_viewstub_viewstub));
//                layoutView = findViewById(R.id.act_layout_viewstub_new);
                Log.e(TAG, "layoutView equals finviewbyid(layout): " +
                        layoutView.equals(findViewById(R.id.act_layout_viewstub_new)));
                Log.e(TAG, "layout: " + layoutView);

                if (layoutView != null) {
                    // layoutView的root view id 是mViewStub inflatedId指定的ID
                    if (layoutView.getId() == R.id.act_layout_viewstub_new) {
                        Log.e(TAG, "layout root id is act_layout_viewstub_new");
                    } else if (layoutView.getId() == R.id.layout_viewstub_old) {
                        Log.e(TAG, "layout root id is layout_viewstub_old");
                    } else {
                        Log.e(TAG, "layout root id is anyone : " + layoutView.getId());
                    }

                    // layoutView的root view布局 和mViewStub的布局保持一致
                    int width = layoutView.getLayoutParams().width;
                    if (width == ViewGroup.LayoutParams.MATCH_PARENT) {
                        Log.e(TAG, "layout width is MATCH_PARENT");
                    } else if (width == ViewGroup.LayoutParams.WRAP_CONTENT) {
                        Log.e(TAG, "layout width is WRAP_CONTENT");
                    } else {
                        Log.e(TAG, "layout width is anyone : " + width);
                    }
                }
            }
        });

    }
}

```

![这里写图片描述](http://img.blog.csdn.net/20170801201410503?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzU5MDAwNDc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

centos下mysql导出表和数据库

mysqldump -u username -p dbname tablename1,tablename2 > db.sql   导入表  mysql>drop tab1;  mysql>dro...

JS 加密和混淆

很多网站down下的Javascript 都有很多乱码。为什么看不懂,而浏览器能识别呢?因为eval()函数,所以很简单的操作就是将eval()函数改为alert()函数。 原理1:无论源码被如何加密...
  • andyxm
  • andyxm
  • 2009年11月26日 09:15
  • 4470

自己泣血总结:Myeclipse8.5-Android开发环境配置(经测试成功)

一、              安装JDK安装完JDK后配置环境变量:以下过程为配置JDK环境变量:6.右击“我的电脑”,点击“属性”:7.选择“高级”选项卡,点击“环境变量”:8.在“系统变量”中...
  • gyflyx
  • gyflyx
  • 2011年05月01日 17:37
  • 3869

myeclipse8.5测试web系统突然测试不了

工具 myeclipse 8.5, 环境jdk1.6,windowsxp,浏览器 ie8.  架构 BS,.在做项目的时候,myeclipse DBUG功能调试不了了。 查看了下 tomcat 6.0...
  • yckiven
  • yckiven
  • 2013年03月26日 11:50
  • 510

Websphere8.5自带jar包与应用jar包冲突的解决办法

原文:http://wenku.baidu.com/link?url=4ZE6tusyNQX-3wAFPr6qNgSy8nyhgyrSglnEwTAdGF5qtN20KMSAwN-xX2CMd4U-n...

淘淘商城项目---8.5

近期复习一下多年前学习的web,现在就网上的项目来实现一个具体的商城项目,每天会持续更新,希望大家关注。 1、父工程的搭建 首先考虑实现时候要创建一个父工程,来统一版本,为Maven的po...

8.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

8.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 #include//8.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 void in...
  • qslife
  • qslife
  • 2016年07月30日 22:30
  • 11451

myeclipse8.5汉化方法

前提:myeclipse汉化包下载分为两种情况:一如果安装目录出现带空格的文件夹,解决方案如下: (此处是以安装在C:/Program Files下为例)      1. 将汉化包中的language...

手把手教你安装Origin8.5 win10 64位亲测成功-附带Crack文件

解释来龙去脉,着急的请直接跳过本来我是不用这个软件的,但是有重要的人找到我,让我帮忙,那肯定是撸起袖子开始搞事情啊,网上大多数都是绿色版的,一键安装,好不痛快,花费了好久都没找到一个有用的,最后只好开...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:测试8.5
举报原因:
原因补充:

(最多只允许输入30个字)