Android:如何制作这个“标签切换器”

时间:2016-01-19 02:18:45

标签: android android-fragments tabs

我试图制作一个像这样的“Tab切换器”:

http://i.stack.imgur.com/C5DMW.png

http://i.stack.imgur.com/bIGHP.png

我实际上使用了Tabs的按钮和视图的Layouts。我将布局的可见性设置为GONE,当它不活动时,我按下Tab键时可见。好吗?有更好的方法吗?

我不知道我是否应该在布局中使用片段并从不同的活动中加载选项卡,或者只是在布局和相同的活动中设置选项卡。

我会告诉你一些代码,所以你可以理解我:

<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"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:text="ACTIVITY ONE"
        android:id="@+id/btnActivity1"
        android:background="@drawable/tab_normal"
        android:textStyle="bold" />

    <FrameLayout
        android:id="@+id/layActivity1"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:visibility="visible">

        <fragment
            android:name="com.android.tests.fragments.tab1"
            android:id="@+id/fraActivity1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:layout="@layout/layout_tab1" />

    </FrameLayout>

    <Button
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:text="ACTIVITY TWO"
        android:id="@+id/btnActivity2"
        android:background="@drawable/tab_normal"
        android:textStyle="bold" />

    <LinearLayout
        android:id="@+id/layActivity2"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:padding="35dp"
        android:visibility="gone">

        <Button
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="NEXT"
            android:id="@+id/btnNEXT"
            android:background="@drawable/button_style"
            android:layout_marginBottom="10dp"/>

    </LinearLayout>

</LinearLayout>

在Activity1中,我在Activity2中使用Fragment,我不这样做。什么是正确的方法?

代码是这样的:

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

public class Main extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnActivity1 = (Button)findViewById(R.id.btnActivity1);
        Button btnActivity2 = (Button)findViewById(R.id.btnActivity2);
        final FrameLayout layActivity1 = (FrameLayout)findViewById(R.id.layActivity1);
        final LinearLayout layActivity2 = (LinearLayout)findViewById(R.id.layActivity2);

        btnActivity1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                layActivity1.setVisibility(View.VISIBLE);
                layActivity2.setVisibility(View.GONE);
            }
        });

        btnActivity2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                layActivity1.setVisibility(View.GONE);
                layActivity2.setVisibility(View.VISIBLE);
            }
        });
    }
}

我不知道我是否必须使用“extends Activity”或“FragmentActivity”。每条评论都会有所帮助。

抱歉英语不好,希望你能理解。

1 个答案:

答案 0 :(得分:0)

我认为您应该使用可扩展布局: https://github.com/traex/ExpandableLayout