ScrollView與ViewPager 顯示不全

GIF.gif

如果要像我那樣顯示全的話蛤虐,需要自己定義修改下ViewPager的代碼

CustomViewPager的代碼如下

public class CustomViewPager extends ViewPager {
    private Map<Integer, View> map = new HashMap<>(3);
    private int currentPage;
    int height = 0;

    public CustomViewPager(Context context) {
        super(context);
    }

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * 作者:GaoXX
     * 創(chuàng)建時間:2017/11/8
     * 注釋描述:測量高度
     */
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (map.size() > currentPage) {
            View view = map.get(currentPage);//獲取當(dāng)前視圖的view
            view.measure(widthMeasureSpec,MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));//測量當(dāng)前view的寬高醉箕,高度就是測量的實際大小值
            height = view.getMeasuredHeight();//獲取測試的高度
        }

        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height,MeasureSpec.EXACTLY);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }


    /**
     * 作者:GaoXX
     * 創(chuàng)建時間:2017/11/8
     * 注釋描述:在切換tab的時候培愁,重置ViewPager的高度
     */
    public void resetHeight(int current) {
        this.currentPage = current;//獲取切換的tab
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) getLayoutParams();
        setLayoutParams(params);//會重新刷新onMeasure方法
    }

    /**
     * 獲取竿痰、存儲每一個tab的高度凡傅,在需要的時候顯示存儲的高度
     *
     * @param current tab的position
     * @param view    當(dāng)前tab的高度
     */
    public void addHeight(int current, View view) {
        map.put(current, view);
    }
}

這里主要是etLayoutParams(params);這個方法會重新調(diào)用measure
MainActivity:

public class MainActivity extends Activity implements View.OnClickListener {
    CustomViewPager myViewPager;
    TextView tvProductInformation;
    TextView tvPurchaseNotes;
    TextView tvDepartureUser;
    public static final int TAB_PRODUCT = 0;//商品信息
    public static final int TAB_PURCHASE = 1;//購買須知
    public static final int TAB_DEPARTUSER = 2;//參團(tuán)用戶
    private int currentTab = 0;
    private List<View> viewList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myViewPager = (CustomViewPager) this.findViewById(R.id.myViewPager);
        tvProductInformation = (TextView) this.findViewById(R.id.tv_merchandise_Product_Information);
        tvPurchaseNotes = (TextView) this.findViewById(R.id.tv_merchandise_purchase_notes);
        tvDepartureUser = (TextView) this.findViewById(R.id.tv_merchandise_DepartureUser);
        initProductInformation();//初始化商品信息
        initPurchaseNotes();//初始化購買須知
        initDepartureUser();//參團(tuán)用戶

        tvProductInformation.setTag(TAB_PRODUCT);
        tvPurchaseNotes.setTag(TAB_PURCHASE);
        tvDepartureUser.setTag(TAB_DEPARTUSER);

        tvProductInformation.setOnClickListener(this);
        tvPurchaseNotes.setOnClickListener(this);
        tvDepartureUser.setOnClickListener(this);

        initmvpShoppBuyUser();
        for (int i = 0; i < viewList.size(); i++) {
            myViewPager.addHeight(i, viewList.get(i));
        }
        myViewPager.resetHeight(0);
    }

    /**
     * 作者:GaoXX
     * 創(chuàng)建時間:2017/8/18
     * 注釋描述:初始化商品信息
     */
    private void initProductInformation() {
        View viewProduct = LayoutInflater.from(this).inflate(R.layout.view_product_information, null);
        viewList.add(viewProduct);
    }

    private void initPurchaseNotes() {
        String html = "<h4>一角寸、保證金的繳納:</h4>\n" +
                "<p style=\"text-indent: 2em\">1专筷、保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納。</p>\n" +
                "<p style=\"text-indent: 2em\">2撕攒、保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納陡鹃。</p>\n" +
                "<p style=\"text-indent: 2em\">3、保證金的繳納保證金的繳納保證金的繳納保證金的繳納:</p>\n" +
                "<p style=\"text-indent: 4em\">3.1保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納抖坪,平臺運(yùn)營客服后臺確認(rèn)后即可參團(tuán)萍鲸。</p>\n" +
                "<p style=\"text-indent: 4em\">3.2保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納。</p>\n" +
                "<p style=\"text-indent: 4em\">3.3保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納擦俐。</p>\n" +
                "<h4>二脊阴、保證金的扣除: </h4>\n" +
                "<p style=\"text-indent: 2em\">1、保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納</p>\n" +
                "<h4>三蚯瞧、保證金的退還:</h4>\n" +
                "<p style=\"text-indent: 2em\">1嘿期、保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納保證金的繳納;</p>\n" +
                "<p style=\"text-indent: 2em\">2埋合、如您繳納的保證金逾期未予以退還秽五,。</p>\n";
        CharSequence charSequence = Html.fromHtml(html);
        View viewPurchase = LayoutInflater.from(this).inflate(R.layout.view_purchase_notes, null);
        TextView textView = (TextView) viewPurchase.findViewById(R.id.tv_purchase_notes);
        textView.setText(charSequence);
        viewList.add(viewPurchase);
    }

    /**
     * 作者:GaoXiaoXiong
     * 創(chuàng)建時間:2017/8/18
     * 注釋描述:參團(tuán)用戶
     */
    private void initDepartureUser() {
        View viewDepartureUser = LayoutInflater.from(this).inflate(R.layout.view_departure_user, null);
        viewList.add(viewDepartureUser);
    }

    private void initmvpShoppBuyUser() {
        final ShoppBuyUserAdapter buyUserAdapter = new ShoppBuyUserAdapter(viewList);
        myViewPager.setAdapter(buyUserAdapter);
        myViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                tvProductInformation.setTextColor(MainActivity.this.getResources().getColor(R.color.black));
                tvPurchaseNotes.setTextColor(MainActivity.this.getResources().getColor(R.color.black));
                tvDepartureUser.setTextColor(MainActivity.this.getResources().getColor(R.color.black));
                switch (position) {
                    case TAB_PRODUCT: {
                        currentTab = TAB_PRODUCT;
                        tvProductInformation.setTextColor(MainActivity.this.getResources().getColor(R.color.blue));
                    }
                    break;

                    case TAB_PURCHASE: {
                        currentTab = TAB_PURCHASE;
                        tvPurchaseNotes.setTextColor(MainActivity.this.getResources().getColor(R.color.blue));
                    }
                    break;

                    case TAB_DEPARTUSER: {
                        currentTab = TAB_DEPARTUSER;
                        tvDepartureUser.setTextColor(MainActivity.this.getResources().getColor(R.color.blue));
                    }
                    break;
                }

                myViewPager.resetHeight(position);
            }

            /**
             * 這個方法會在當(dāng)前頁面發(fā)生滾動的時候被調(diào)用
             * @param position 當(dāng)前頁面的索引
             * @param positionOffset 它取值范圍為[0,1),表示偏移量饥悴。0->沒有偏移  接近于1->幾乎完全偏移
             * @param positionOffsetPixels 偏移的像素值
             */
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });


    }

    @Override
    public void onClick(View view) {
        myViewPager.setCurrentItem((int) view.getTag(), true);
    }

    /**
     * 作者:GaoXX
     * 創(chuàng)建時間:2017/8/18
     * 注釋描述:初始化購買用戶的apdater
     */
    static class ShoppBuyUserAdapter extends PagerAdapter {
        private List<View> viewList;

        public ShoppBuyUserAdapter(List<View> viewList) {
            this.viewList = viewList;
        }

        @Override
        public int getCount() {
            return viewList.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == (View) object;
        }

        @Override
        public View instantiateItem(ViewGroup container, int position) {
            container.addView(viewList.get(position));
            return viewList.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(viewList.get(position));
        }
    }

}

代碼傳送門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盲再,隨后出現(xiàn)的幾起案子西设,更是在濱河造成了極大的恐慌,老刑警劉巖答朋,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷揽,死亡現(xiàn)場離奇詭異,居然都是意外死亡梦碗,警方通過查閱死者的電腦和手機(jī)禽绪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洪规,“玉大人印屁,你說我怎么就攤上這事≌独” “怎么了雄人?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長念赶。 經(jīng)常有香客問我础钠,道長恰力,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任旗吁,我火速辦了婚禮踩萎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘很钓。我一直安慰自己香府,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布履怯。 她就那樣靜靜地躺著回还,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叹洲。 梳的紋絲不亂的頭發(fā)上柠硕,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機(jī)與錄音运提,去河邊找鬼蝗柔。 笑死,一個胖子當(dāng)著我的面吹牛民泵,可吹牛的內(nèi)容都是我干的癣丧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼栈妆,長吁一口氣:“原來是場噩夢啊……” “哼胁编!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鳞尔,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嬉橙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寥假,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體市框,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年糕韧,在試婚紗的時候發(fā)現(xiàn)自己被綠了枫振。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡萤彩,死狀恐怖粪滤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雀扶,我是刑警寧澤额衙,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響窍侧,放射性物質(zhì)發(fā)生泄漏县踢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一伟件、第九天 我趴在偏房一處隱蔽的房頂上張望硼啤。 院中可真熱鬧,春花似錦斧账、人聲如沸谴返。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗓袱。三九已至,卻和暖如春习绢,著一層夾襖步出監(jiān)牢的瞬間渠抹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工闪萄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梧却,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓败去,卻偏偏與公主長得像放航,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子圆裕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容