私は最近、Android での開発を開始しましたが、まだいくつかの概念について理解しようとしています。
私は電話スタイルのキーパッドのレイアウトに取り組んできましたが、ほとんどが機能し、希望どおりに見えるようになりました。
次のステップは、ここに表示されているものをすべてタブにまとめて、複数のアクティビティを切り替えることができるようにすることでした。
には次の XML を使用しましたTabHost
。
<?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:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="70.0dp"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
TabActivity
タブ ロジックを管理するには、次のようにします。
[Activity(MainLauncher = true, Label = "@string/app_name", Theme = "@android:style/Theme.NoTitleBar")]
public class TabContainer : TabActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.TabContainerLayout);
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent(this, typeof(KeypadActivity));
intent.AddFlags(ActivityFlags.NewTask);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = TabHost.NewTabSpec("keypad");
spec.SetIndicator("Keypad", Resources.GetDrawable(Resource.Drawable.keypad_light));
spec.SetContent(intent);
TabHost.AddTab(spec);
// Do the same for the other tabs
intent = new Intent(this, typeof(LogsActivity));
intent.AddFlags(ActivityFlags.NewTask);
spec = TabHost.NewTabSpec("logs");
spec.SetIndicator("Logs", Resources.GetDrawable(Resource.Drawable.logs_light));
spec.SetContent(intent);
TabHost.AddTab(spec);
intent = new Intent(this, typeof(UnsetActivity));
intent.AddFlags(ActivityFlags.NewTask);
spec = TabHost.NewTabSpec("unset");
spec.SetIndicator("Unset", Resources.GetDrawable(Resource.Drawable.unset_light));
spec.SetContent(intent);
TabHost.AddTab(spec);
TabHost.CurrentTab = 0;
}
}
タブは正しく動作しますが、以前のキーパッドの機能とスタイルは失われ、すべて次のように表示されます。
既存のKeypadActivity
ものを に挿入するとTabHost
、機能とスタイルが失われるのはなぜですか? どうすれば内部でそれを維持できTabHost
ますか?