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

时间:2012-03-14 18:51:00

标签: 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, 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;
    }

// Tabber视图

但是这个按钮隐藏了Tabber视图的标签。我想添加在tabber视图上方添加此按钮。 Plz帮助我......我遇到了很大麻烦。 问候。

1 个答案:

答案 0 :(得分:1)

所以基本上你想要一个位于TabWidget标签上方的按钮(或按钮),无论选择哪个标签?

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

<?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