android ViewStub

ViewStub相当于include,对于layout布局是十分有用的。

ViewStub组件和<include>标签的作用类似,主要是为了提高布局的重用性,及布局的模块化。它们之间最大的差别是,ViewStub中的布局不会随着它所在布局的渲染而渲染,而<include>标签中的布局会随着它所在布局的渲染而渲染,ViewStub中的布局只有在你需要的时候才会渲染到主界面中。
下面是一个简单的例子。
android <wbr>ViewStub

在button下有一个viewstub,当点击buttonone是把它显示出来,这个viewstub中是与stub_red.xml这个layout相关联的。要显示它很简单,只要调inflate()这个方法就可以了。
注意: 其中android:inflatedId="@+id/myid",表示加载后的viewid,没有加载之前通过这个viewid是查找不到任何view的,加载之后就可以了
android <wbr>ViewStub

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation = "vertical"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent" android:id="@+id/lin1"
>
<Button
android:id = "@+id/show"
android:text = "ButtonOne"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
/>
<ViewStub
android:id = "@+id/viewStub" android:inflateId="@+id/myid" android:layout_marginLeft="60dip"
android:layout = "@layout/viewstub_red"
android:layout_width = "90dip"
android:layout_height = "40dip"
/>
</LinearLayout>

viewstub.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
android:background = "@color/red">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello world"></TextView>
</LinearLayout>

MainActivity

package com.bivin;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewStub;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
private ViewStub mViewStub;
private Button mShow;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mViewStub = (ViewStub) findViewById(R.id.viewStub);
mShow = (Button) findViewById(R.id.show);

mShow.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
if (mViewStub != null) {
mViewStub.inflate();
}
}
});
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值