package com.testing.simplesp.widget;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import android.webkit.WebView;
import android.widget.ScrollView;
import com.testing.simplesp.R;
public class MyViewPager extends ViewPager {
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
ScrollView sv = (ScrollView) v.findViewById(R.id.sv); //res ID
WebView wv_doc = (WebView) v.findViewById(R.id.wv_doc); //res ID
System.out.println(sv.getVisibility() + ":" + wv_doc.getVisibility());
System.out.println(v.getTag());
if (sv != null && sv.getVisibility() == View.VISIBLE) {
return sv.canScrollHorizontally(-dx);
}
if (wv_doc != null && wv_doc.getVisibility() == View.VISIBLE) {
return super.canScroll(v, checkV, dx, x, y);
}
return super.canScroll(v, checkV, dx, x, y);
}
}
package com.testing.simplesp.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import com.testing.simplesp.R;
import com.testing.simplesp.adapter.Document.DocumentAdapter;
import com.testing.simplesp.domain.DocumentItem;
/**
-
A simple {@link Fragment} subclass.
*/
public class DocumentDetailFragment extends Fragment {private WebView wv_doc;
private TextView tv_title;
private TextView tv_unit;
private TextView tv_content;
private Toolbar mToolbar;
private ScrollView sv;
private DocumentItem.Data mData;
private boolean isWebView = false;
private boolean hasLoad = false;
private View mView;
private RelativeLayout mRl;public DocumentDetailFragment() {
}public static DocumentDetailFragment newInstance(int position) {
DocumentDetailFragment fragment = new DocumentDetailFragment();
Bundle bundle = new Bundle();
bundle.putInt("position", position);
fragment.setArguments(bundle);
return fragment;
}@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_document_detail, container, false);
initView();
initData();
return mView;}
private void initView() {
setHasOptionsMenu(true);
mRl = (RelativeLayout) mView.findViewById(R.id.rl);
wv_doc = (WebView) mView.findViewById(R.id.wv_doc);
sv = (ScrollView) mView.findViewById(R.id.sv);
tv_title = (TextView) mView.findViewById(R.id.tv_title);
tv_unit = (TextView) mView.findViewById(R.id.tv_unit);
tv_content = (TextView) mView.findViewById(R.id.tv_content);
mToolbar = (Toolbar) mView.findViewById(R.id.toolbar);
sv.setVisibility(View.VISIBLE);
wv_doc.setVisibility(View.INVISIBLE);
((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
}private void initData() {
Bundle bundle = getArguments();
int position = bundle.getInt("position");
mView.setTag(new Integer(position));
mData = DocumentAdapter.mValues.get(position);
tv_title.setText(mData.getTitle());
tv_unit.setText(mData.getUnit() + " " + mData.getTime());
tv_content.setText(mData.getContent());
}private void showWebView() {
hasLoad = true;
//展示原网页
WebSettings settings = wv_doc.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);wv_doc.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); wv_doc.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); } }); wv_doc.loadUrl(mData.getUrl());
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
super.onCreateOptionsMenu(menu, inflater);
}@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
if (!isWebView) {
if (!hasLoad)
showWebView();
wv_doc.setVisibility(View.VISIBLE);
sv.setVisibility(View.INVISIBLE);
} else {
wv_doc.setVisibility(View.INVISIBLE);
sv.setVisibility(View.VISIBLE);
}
isWebView = !isWebView;
item.setTitle(isWebView ? "返回" : "查看原网页");
return true;
}
return super.onOptionsItemSelected(item);
}
}
package com.testing.simplesp.adapter.Document;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import com.testing.simplesp.fragment.DocumentDetailFragment;
/**
-
Created by admin on 2016/7/12.
*/
public class DocumentDetailPageAdapter extends FragmentStatePagerAdapter {
public DocumentDetailPageAdapter(FragmentManager fm) {
super(fm);
}@Override
public Fragment getItem(int position) {
System.out.println(position);
return DocumentDetailFragment.newInstance(position);
}@Override
public int getCount() {
return DocumentAdapter.mValues.size();
}
}
package com.testing.simplesp.activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.webkit.WebView;
import android.widget.ScrollView;
import android.widget.TextView;
import com.testing.simplesp.R;
import com.testing.simplesp.adapter.Document.DocumentDetailPageAdapter;
import com.testing.simplesp.domain.DocumentItem.Data;
public class DocumentDetailActivity extends AppCompatActivity {
public static ViewPager sViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
initData();
}
private void initData() {
//不展示原网页
setTitle("校园公文通");
}
private void initView() {
setContentView(R.layout.activity_detail_document);
sViewPager = (ViewPager) findViewById(R.id.container);
int position = getIntent().getIntExtra("currentPosition", 0);
sViewPager.setAdapter(new DocumentDetailPageAdapter(getSupportFragmentManager()));
sViewPager.setCurrentItem(position);
}
}
很奇怪的是,第一个fragment点击menuitme的时候,webview左右是无法拖动的,但是其他界面却可以。
还有
当position = 0时,position=1的menuitem是不显示的,但是滑动到第四个fragment再滑动回来却有显示。
当postion>0时,position-1的显示情况和上述一模一样。
找了各个地方,实在是找不到哪里出了问题。求助!!!