WebView项目:每个Tab都有相同的GridView图像

时间:2015-10-08 09:42:25

标签: webview tabs android-viewpager

WebView项目问题。我已经尝试了许多想法但是     输出是这样的。我上传了2个图像输出。     我从这个项目的不同站点获得了示例:     Grid layout within tabs     gridview with webview android

maintab.xml

        <CoordinatorLayout 

               xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:tools="http://schemas.android.com/tools">

       <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="scrollable"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#03A9F4"
        tools:context="com.example.balakumar.mytabs.Maintabs"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        </android.support.design.widget.CoordinatorLayout>



gridview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

       <GridView

        android:id="@+id/gridview1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:verticalSpacing="5dp"
        android:horizontalSpacing="5dp"
        android:numColumns="3"/>

        </FrameLayout>

webpage.xml

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.balakumar.mytabs.webpage"
    android:id="@+id/relative">
    <ProgressBar
    android:id="@+id/progress"
    android:layout_width="fill_parent"
    android:layout_height="5dp"
    style="?android:progressBarStyleHorizontal"
    android:max="100"
    android:progress="45"/>
    <WebView
        android:id="@+id/webview1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/progress"

        />


        </RelativeLayout>

Maintabs.java

     public class Maintabs extends ActionBarActivity 
    implements ActionBar.TabListener
     {

    SectionsPagerAdapter mSectionsPagerAdapter;

    /**
     * The {@link ViewPager} that will host the section contents.
     */
    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Here we load the xml layout we created above
        setContentView(R.layout.activity_maintabs);

        // Set up the action bar.
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Create the adapter that will return a fragment for each of the three
        // primary sections of the activity.
   mSectionsPagerAdapter = new
   SectionsPagerAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // When swiping between different sections, select the corresponding
        // tab. We can also use ActionBar.Tab#select() to do this if we have
        // a reference to the Tab.
        mViewPager.setOnPageChangeListener(new
     ViewPager.SimpleOnPageChangeListener()
        {
            @Override
            public void onPageSelected(int position)
            {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        // For each of the sections in the app, add a tab to the action bar.
        for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++)
        {
       // Create a tab with text corresponding to the page title defined by
       // the adapter. Also specify this Activity object, which implements
          // the TabListener interface, as the callback (listener) for when
            // this tab is selected.
            actionBar.addTab(
                    actionBar.newTab()
                            .setText(mSectionsPagerAdapter.getPageTitle(i))
                            .setTabListener(this));
        }
    }


    @Override
 public void onTabSelected(ActionBar.Tab tab, FragmentTransaction
 fragmentTransaction)
    {
   // When the given tab is selected, switch to the corresponding page in
        // the ViewPager.
        mViewPager.setCurrentItem(tab.getPosition());
    }

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

    }

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

    }

    /**
   * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
     * one of the sections/tabs/pages.
     */
    public class SectionsPagerAdapter extends FragmentPagerAdapter
    {

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

        @Override
     public Fragment getItem(int position)
        {
     // getItem is called to instantiate the fragment for the given page.
    // Return a PlaceholderFragment (defined as a static inner class below).
            return new PlaceHolderFragment();
        }

        @Override
        public int getCount()
        {
            // Show 3 total pages.
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position)
        {
            Locale l = Locale.getDefault();
            switch (position)
            {
                case 0:
                    return getString(R.string.English).toUpperCase(l);
                case 1:
                    return getString(R.string.Tamil).toUpperCase(l);
                case 2:
                    return getString(R.string.Hindi).toUpperCase(l);
            }
            return null;
        }
    }
    }


PlaceHolderFragment.java

    public class PlaceHolderFragment extends Fragment
    {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceHolderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup 
    container, Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.gridview, 
    container, false);

        // Here we inflate the layout we created above
  GridView gridView = (GridView) rootView.findViewById(R.id.gridview1);
 gridView.setAdapter(new ImageAdapter(getActivity()));
 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 public void onItemClick(AdapterView<?> parent, View v, int position, 
 long id) {
                String urlP;
                switch (position) {
                    case 0:
                        urlP = "http://m.thehindu.com/opinion/open-page/";
                        break;
                    case 1:
                        urlP = "http://m.newindianexpress.com/";
                        break;
                    case 2:
                     urlP = "http://timesofindia.indiatimes.com/?from=mdr";
                        break;
                   default:
                        urlP = "http://facebook.com";
                        break;
                }
                // Send intent to SingleViewActivity
                Intent i = new Intent(getContext(), webpage.class);
                i.putExtra("id", urlP);//Posición del elemento
                startActivity(i);
        }
        });

        return rootView;
    }
    }

ImageAdapter.java

    class ImageAdapter extends BaseAdapter
    {
     private Context mContext;

        // Constructor
        public ImageAdapter(Context c) {
            mContext = c;
        }

        public int getCount() {
            return mThumbIds.length;
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return 0;
        }

        // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;

            if (convertView == null) {
                imageView = new ImageView(mContext);
           imageView.setLayoutParams(new  GridView.LayoutParams(200,200));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(2, 2, 2, 2);
            }
            else
            {
                imageView = (ImageView) convertView;
            }
            imageView.setImageResource(mThumbIds[position]);
            return imageView;
        }

     // Keep all Images in array
     public Integer[] mThumbIds = {
        R.mipmap.thehindu, R.mipmap.indianexpress, R.drawable.ic_toi

     };
     }

webpage.java

    public class webpage extends AppCompatActivity {
    WebView myWebView;
    private ActionBar actionBar;
    ProgressBar progressBar;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webpage);

        myWebView = (WebView) this.findViewById(R.id.webview1);

        myWebView.setWebViewClient(new MyBrowser());



        progressBar = (ProgressBar) findViewById(R.id.progress);
        myWebView.setWebViewClient(new WebViewClient());
        String url=getIntent().getExtras().getString("id");
        myWebView.loadUrl(String.valueOf(url));
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setLoadsImagesAutomatically(true);
        myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        actionBar=getSupportActionBar();

        assert actionBar != null;
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);


    }

    private class MyBrowser extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

            progressBar.setVisibility(View.GONE);
        }
    }

    // To handle "Back" key press event for WebView to go back to 
    previou screen.
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
        else
        {
            finish();
            return true;
        }
     }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
   // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_webpage, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    }

0 个答案:

没有答案