Actionbarとfragmentを使用した簡易タブブラウザ

シェアする

tab browser

Actionbar のサンプル見て、コンテンツ部分に Webview はめればタブブラウザになるじゃんと思ってやってみた。

プロジェクトを作成する時に Navigation Type で Tabs + Swipe を選択すると Swipe でタブ移動のできる、タブ型のUIのひな形が作成された状態になってます。

ひな形にあった DummyFlagment 部分を Webview に変更し、タブの追加削除機能を追加しています。バグとかなんとかいろいろ無視しています。とりあえずなので...。

以下 MainActivity.java

package jp.loumo.testbrowser2;
//import文は省略

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

    SectionsPagerAdapter mSectionsPagerAdapter;

    ViewPager mViewPager;
    int mTabNum;
    ActionBar mActionBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mActionBar = getActionBar();
        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                mActionBar.setSelectedNavigationItem(position);
                Log.d("getPosition", String.valueOf(mActionBar.getSelectedTab().getPosition()));
            }
        });

        mTabNum=1;
        mActionBar.addTab(mActionBar.newTab().setText("tab"+mTabNum).setTabListener(this));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu_addTab:
            mTabNum++;
            mActionBar.addTab(mActionBar.newTab().setText("tab"+mTabNum).setTabListener(this));
            return true;
        case R.id.menu_removeTab:
            mActionBar.removeTabAt(mActionBar.getSelectedTab().getPosition());
            return true;
        }
        return false;
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            Fragment fragment = new WebviewSectionFragment();
            Bundle args = new Bundle();
            args.putInt(WebviewSectionFragment.ARG_SECTION_NUMBER, i + 1);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public int getCount() {
            return 3;
        }
    }

    public static class WebviewSectionFragment extends Fragment {
        public WebviewSectionFragment() {
        }

        public static final String ARG_SECTION_NUMBER = "section_number";
        
        View mFragView;
        WebView mWebview;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            mFragView = inflater.inflate(R.layout.activity_webview, container, false);
            mWebview = (WebView)mFragView.findViewById(R.id.webview);
            mWebview.setVerticalScrollbarOverlay(true);
            mWebview.setWebViewClient(new WebViewClient());
            WebSettings settings = mWebview.getSettings();
            settings.setSupportMultipleWindows(true);
            settings.setLoadsImagesAutomatically(true);
            settings.setBuiltInZoomControls(true);
            settings.setSupportZoom(true);
            settings.setLightTouchEnabled(true);
            settings.setJavaScriptEnabled(true);

            mWebview.loadUrl("http://www.google.com/");
            Button button = (Button)mFragView.findViewById(R.id.go_btn);
            button.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    onClickGoBtn(v);
                }
            });
            return mFragView;
        }
        
        public void onClickGoBtn(View v) {
            EditText editText = (EditText)mFragView.findViewById(R.id.urlbar);
            String urlString = editText.getText().toString();
            
            mWebview.loadUrl(urlString);
        }

    }
}
Sponsored Link

シェアする

フォローする