我想知道是否有一种简单的方法可以让我的选项卡显示我在布局文件夹中拥有的文件。我考虑过只使用 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);
}
}
}