0

我想知道是否有一种简单的方法可以让我的选项卡显示我在布局文件夹中拥有的文件。我考虑过只使用 webview 来显示,但有没有更好的方法,只是好奇。下面是我的代码。

   import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;

    public class TabContentActivity extends Activity {

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

            TextView textview = new TextView(this);

            textview.setText(getIntent().getStringExtra("content"));
            setContentView(textview);
        }
    }

Layout

<!-- language: xml -->    

    <?xml version="1.0" encoding="utf-8"?>
    <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" >

        <LinearLayout
            android:id="@+id/tabcontainer"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="48dp"
                android:background="#000"
                android:gravity="center_horizontal" >
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:fadeScrollbars="false"
                android:fadingEdge="none"
                android:scrollbars="@null" >
            </FrameLayout>
        </LinearLayout>

    </TabHost>

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tab"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_gravity="left"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tabLabel"
            android:layout_width="fill_parent"
            android:layout_height="43dp"
            android:gravity="center_vertical|center_horizontal"
            android:textColor="#FFF"
            android:textSize="14sp" />

        <TextView
            android:id="@+id/tabSelectedDivider"
            android:layout_width="fill_parent"
            android:layout_height="5dp"
            android:layout_alignParentBottom="true"
            android:background="#3366CC"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tabDivider"
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:layout_alignParentBottom="true"
            android:background="#3366CC" />

        <TextView
            android:id="@+id/tabSplitter"
            android:layout_width="1px"
            android:layout_height="23dp"
            android:layout_alignParentRight="true"
            android:layout_marginTop="10dp"
            android:background="#333" />

    </RelativeLayout>



import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;

public class TabTutorialActivity extends TabActivity {

    // Divide 1.0 by # of tabs needed
    // In this case: 1.0/2 => 0.5
    private static final LayoutParams params = new LinearLayout.LayoutParams(
            LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 0.5f);

    private static TabHost tabHost;
    private static TabHost.TabSpec spec;
    private static Intent intent;
    private static LayoutInflater inflater;

    private View tab;
    private TextView label;
    private TextView divider;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Get inflator so we can start creating the custom view for tab
        inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        // Get tab manager
        tabHost = getTabHost();

        // This converts the custom tab view we created and injects it into the tab widget
        tab = inflater.inflate(R.layout.tab, getTabWidget(), false);
        // Mainly used to set the weight on the tab so each is equally wide
        tab.setLayoutParams(params);
        // Add some text to the tab
        label = (TextView) tab.findViewById(R.id.tabLabel);
        label.setText("Repition Counter");
        // Show a thick line under the selected tab (there are many ways to show
        // which tab is selected, I chose this)
        divider = (TextView) tab.findViewById(R.id.tabSelectedDivider);
        divider.setVisibility(View.VISIBLE);
        // Intent whose generated content will be added to the tab content area
        intent = new Intent(TabTutorialActivity.this, TabContentActivity.class);
        // Just some data for the tab content activity to use (just for demonstrating changing content)
        intent.putExtra("content", "Content for HOME");
        // Finalize the tabs specification
        spec = tabHost.newTabSpec("home").setIndicator(tab).setContent(intent);
        // Add the tab to the tab manager
        tabHost.addTab(spec);


        // Add another tab
        tab = inflater.inflate(R.layout.tab, getTabWidget(), false);
        tab.setLayoutParams(params);
        label = (TextView) tab.findViewById(R.id.tabLabel);
        label.setText("BMI");
        intent = new Intent(TabTutorialActivity.this, TabContentActivity.class);
        intent.putExtra("content", "Content for USERS");
        spec = tabHost.newTabSpec("users").setIndicator(tab).setContent(intent);
        tabHost.addTab(spec);


        // Listener to detect when a tab has changed. I added this just to show 
        // how you can change UI to emphasize the selected tab
        tabHost.setOnTabChangedListener(new OnTabChangeListener() {
            @Override
            public void onTabChanged(String tag) {
                // reset some styles
                clearTabStyles();
                View tabView = null;
                // Use the "tag" for the tab spec to determine which tab is selected
                if (tag.equals("home")) {
                    tabView = getTabWidget().getChildAt(0);
                }
                else if (tag.equals("users")) {
                    tabView = getTabWidget().getChildAt(1);
                }
                tabView.findViewById(R.id.tabSelectedDivider).setVisibility(View.VISIBLE);
            }       
        });
    }

    private void clearTabStyles() {
        for (int i = 0; i < getTabWidget().getChildCount(); i++) {
            tab = getTabWidget().getChildAt(i);
            tab.findViewById(R.id.tabSelectedDivider).setVisibility(View.GONE);
        }
    }
}
4

0 回答 0