Как добавить общую кнопку на все вкладки Tab Host в Android? - PullRequest
0 голосов
/ 14 марта 2012

Я использую этот код.

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 View

Но эта кнопка скрывает вкладки представления Tabber. Я хочу добавить, чтобы добавить эту кнопку над вкладкой. Пожалуйста, помогите мне .. У меня большие проблемы. С уважением.

1 Ответ

1 голос
/ 14 марта 2012

Таким образом, вам нужна кнопка (или кнопки) над вкладками 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
...