如何在Android中为Tab主机的所有选项卡添加公共按钮?

如何在Android中为Tab主机的所有选项卡添加公共按钮?,android,android-layout,tabs,android-tabhost,tabwidget,Android,Android Layout,Tabs,Android Tabhost,Tabwidget,我正在使用这个代码 private ViewGroup createTabbarView() { bookedZone = "None"; bookedStand = "None"; tabHost = new TabHost(this, null); tabHost.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutPar

我正在使用这个代码

private ViewGroup createTabbarView() {

        bookedZone = "None";
        bookedStand = "None";

        tabHost = new TabHost(this, null);
        tabHost.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

        Button btn = new Button(this);
        btn.setText("Emergency");
        tabHost.addView(btn, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        tabWidget = new TabWidget(this);
        tabWidget.setId(android.R.id.tabs);
        tabHost.addView(tabWidget, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        FrameLayout frameLayout = new FrameLayout(this);
        frameLayout.setId(android.R.id.tabcontent);
        frameLayout.setPadding(0, 100, 0, 0);
        tabHost.addView(frameLayout, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // WRAP_CONTENT

        tabHost.setOnTabChangedListener(new OnTabChangeListener() {

            public void onTabChanged(final String tabId) {
                if (tabId.equalsIgnoreCase("TripList")
                        && (AVL_Service.pref.getBoolean("BluetoothMeter", false) || AVL_Service.pref.getBoolean("VivotechDevice", false) || AVL_Service.pref.getBoolean(
                                "BlueBambooDevice", false))) {
                    if (mBluetoothAdapter == null)
                        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                    final Context tempContext = getBaseContext();
                    if (mBluetoothAdapter == null) {
                        // Device does not support Bluetooth
                        Log.d(getClass().getSimpleName(), "Bluetooth not supported.");
                        Toast.makeText(tempContext, "Bluetooth not supported!", Toast.LENGTH_LONG).show();
                    } else {
                        if (!mBluetoothAdapter.isEnabled()) {
                            Log.d(getClass().getSimpleName(), "Bluetooth not enabled.");
                            Toast.makeText(tempContext, "Bluetooth not enabled, trying to enable", Toast.LENGTH_LONG).show();
                            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                            startActivityForResult(enableBtIntent, Constants.REQUEST_ENABLE_BT);
                            // tabHost.getTabWidget().getChildAt(ZoneIndex).requestFocusFromTouch();
                        } else {

                            Message lmsg = new Message();
                            lmsg.obj = null;
                            lmsg.what = MsgType.TabberClick;
                            msgHandler.sendMessageDelayed(lmsg, 1000);

                        }// if bluetooth enabled
                    }// if bluetooth not supported
                }// if Bluetooth connection required
                else if (tabId.equalsIgnoreCase("Status")) {
                    setMeterStatus();
                }
            }// onTabChanged
        });

        tabHost.setup();

        // Status Tab
        TabSpec tabSpec = tabHost.newTabSpec("Status");
        tabSpec.setIndicator("Status", getResources().getDrawable(R.drawable.status));
        tabSpec.setContent(new TabContentFactory() {
            @Override
            public View createTabContent(String arg0) {

                return createStatusView();
            }
        });
        tabHost.addTab(tabSpec);

        // Zones Tab
        tabSpec = tabHost.newTabSpec("Zones");
        tabSpec.setIndicator("Zones", getResources().getDrawable(R.drawable.zones));
        tabSpec.setContent(new TabContentFactory() {

            @Override
            public View createTabContent(String arg0) {

                return createZoneView();
            }
        });
        tabHost.addTab(tabSpec);

        // Bids Tab
        bidTab = tabHost.newTabSpec("Bids");
        bidTab.setIndicator("Bids", getResources().getDrawable(R.drawable.icon + bidCount));
        bidTab.setContent(new TabContentFactory() {

            @Override
            public View createTabContent(String arg0) {

                return createBidsView();
            }
        });
        tabHost.addTab(bidTab);

        // TripList Tab
        tabSpec = tabHost.newTabSpec("TripList");
        tabSpec.setIndicator("TripList", getResources().getDrawable(R.drawable.triplist));
        tabSpec.setContent(new TabContentFactory() {

            @Override
            public View createTabContent(String arg0) {

                return createManifestView();
            }
        });
        tabHost.addTab(tabSpec);

        return tabHost;
    }
//塔伯视图

但此按钮隐藏选项卡视图的选项卡。我想在选项卡视图上方添加此按钮。请帮帮我,我有大麻烦了。
关于。

那么基本上您想要一个按钮(或多个按钮)位于
选项卡Widget
选项卡上方,而不管选择了哪个选项卡

只需将布局文件更改为类似的内容(伪代码)


...

我已经试过了,但没有动态工作。我不使用xml,你能告诉我如何动态地做吗?即使您需要动态创建tabspec内容,也没有理由不在主视图中使用XML模板,然后简单地生成tabspec内容。在我看来,你为自己做了很多工作
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    ... >
    <LinearLayout
        android:orientation="vertical"
        ... >
        <LinearLayout
            android:orientation="horizontal"
            ... >
            <Button
                ... />
        </LinearLayout>
        <TabWidget
            android:id="@android:id/tabs"
            ... />
        <FrameLayout
            android:id="@android:id/tabcontent"
            ... >
            ...
        </FrameLayout>
    </LinearLayout>
</TabHost