zoukankan      html  css  js  c++  java
  • TabLayout简单例子

    要生成一个Tab UI需要用到两个类,一个是TabHost,一个是TabWidget. TabWidget是用来显示标签栏的,内嵌在TabHost里面。

    首先创建以TabHost为根节点的XMl布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 将Layout的XML文件的根节点设置为TabHost,并且id要为Android内置的id:@android:id/tabhost -->
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <!-- 将TabHost里面的布局设置为线性布局 -->
    
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:padding="5dp" >
    
            <!-- 设置TabHost里面的TabWidget,放置标签,id要设置为Android内置的id: @android:id/tabs -->
    
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
            </TabWidget>
    
            <!-- 设置TabHost里面的FrameLayout,放置内容,id设置为Android是内置id: @android:id/tabcontent -->
    
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
            </FrameLayout>
        </LinearLayout>
    
    </TabHost>

    生成三个对应于标签内容的Activity:

    PictureActivity:

    public class PictureActivity extends Activity
    {
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		System.out.println("PictureActivity--->onCreate");
    		super.onCreate(savedInstanceState);
    
    		LinearLayout layout = new LinearLayout(this);
    		layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    
    		ImageView imgView = new ImageView(this);
    		imgView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    		imgView.setImageResource(R.drawable.girl);
    		layout.addView(imgView);
    
    		setContentView(layout);
    	}
    }

    TextActivity:

    public class TextActivity extends Activity
    {
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		System.out.println("TextActivity--->onCreate");
    		super.onCreate(savedInstanceState);
    
    		LinearLayout layout = new LinearLayout(this);
    		layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    
    		TextView textView = new TextView(this);
    		textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    		textView.setText("你好,这是个美女信息");
    		layout.addView(textView);
    		setContentView(layout);
    	}
    }

    EditActivity:

    public class EditActivity extends Activity
    {
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		System.out.println("EditActivity--->onCreate");
    		super.onCreate(savedInstanceState);
    
    		LinearLayout layout = new LinearLayout(this);
    		layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    
    		EditText edit = new EditText(this);
    		edit.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    		layout.addView(edit);
    
    		setContentView(layout);
    	}
    }

    主要的Activity:

    public class MyTab extends TabActivity
    {
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		// 得到xml里面定义的TabHost
    		TabHost host = getTabHost();
    		// 开始生成三个标签,分别对应PictureActivity,TextActivity,EditActivity
    
    		TabHost.TabSpec label1 = host.newTabSpec("picture");
    		// 设置标签的图片及信息
    		label1.setIndicator("相片", getResources().getDrawable(R.drawable.label1));
    		// 设置便签对应显示内容
    		label1.setContent(new Intent(this, PictureActivity.class));
    		host.addTab(label1);
    
    		// 同样设置另外两个标签
    		TabHost.TabSpec label2 = host.newTabSpec("information");
    		label2.setIndicator("个人信息", getResources().getDrawable(R.drawable.label2));
    		label2.setContent(new Intent(this, TextActivity.class));
    		host.addTab(label2);
    
    		TabHost.TabSpec label3 = host.newTabSpec("edit");
    		label3.setIndicator("编辑", getResources().getDrawable(R.drawable.label3)).setContent(new Intent(this, EditActivity.class));
    		host.addTab(label3);
    
    		host.setCurrentTab(0);
    	}
    }


    TabWidget会在TabHost调用addTab()时候,系统自动将新增的Tab加进TabWidget中,这个不用我们来操作。

  • 相关阅读:
    Typora Writings
    Xcode7.3 beta 新功能
    最美应用API接口分析
    'Project Name' was compiled with optimization
    web前端开发与iOS终端开发的异同[转]
    2015-12-19_16_30_15
    Xcode搭建Python编译环境
    jsPach.qq.com
    Q&AApple’s Craig Federighi talks open source Swift, Objective-C and the next 20 years of development
    .NET Core项目与传统vs项目的细微不同
  • 原文地址:https://www.cnblogs.com/hanyuan/p/2587316.html
Copyright © 2011-2022 走看看