乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      TabLayout+ViewPager+Fragment完成滑動(dòng)界面

       quasiceo 2016-12-31

      目錄(?)[+]

      從昨天下午就搞把這三種一起組合,然后就寫(xiě),但就是不行,快瘋了,寫(xiě)了一遍又一遍就是不行,如果看到我文件包名時(shí),你就知道我有多氣憤了。今天中午吃飯的時(shí)候就突然想起是不是布局出了點(diǎn)什么問(wèn)題。一瞅,之前我按照官網(wǎng)上的說(shuō)是用一般使用水平布局,一打ViewPager布局就發(fā)現(xiàn)這布局的寬度幾乎為0dp的,就是一場(chǎng)豎道。我去,然后換成相對(duì)布局,就重新調(diào)了調(diào),然后就行了,我都快哭了。哭


      在文件上是兩部分一個(gè)是Fragment,另一個(gè)就是操作了。


      我是新建了兩個(gè)Fragment這就不全貼出來(lái)了,上上篇都說(shuō)了很簡(jiǎn)單,F(xiàn)ragment有著和Activity 相似的生命周期。用他進(jìn)行管理操作很簡(jiǎn)單和Activity只是創(chuàng)建的方法不同。

      創(chuàng)建一個(gè)布局進(jìn)行界面顯示。


      添加  compile 'com.Android.support:design:23.2.1'  備用

      1、創(chuàng)建tab_1.xml

      1. <?xml version="1.0" encoding="utf-8"?>  
      2. <RelativeLayout xmlns:android="http://schemas./apk/res/android"  
      3.     android:background="#990033"  
      4.     android:layout_width="match_parent"  
      5.     android:layout_height="match_parent">  
      6.   
      7.     <Button  
      8.         android:layout_width="match_parent"  
      9.         android:layout_height="wrap_content"  
      10.         android:textAllCaps="false"  
      11.         android:text="Tab_1_Toast"  
      12.         android:id="@+id/button1_Toast"  
      13.         android:layout_centerVertical="true"  
      14.         android:layout_centerHorizontal="true" />  
      15. </RelativeLayout>  
      一個(gè)Button而已。

      2、然后創(chuàng)建一個(gè)管理它的類這個(gè)類繼承Fragment  (Tab_Fragment_1)

      1. package com.example.hejingzhou.sb;  
      2.   
      3. import android.os.Bundle;  
      4. import android.support.annotation.Nullable;  
      5. import android.support.v4.app.Fragment;  
      6. import android.support.v7.widget.LinearLayoutManager;  
      7. import android.support.v7.widget.RecyclerView;  
      8. import android.view.LayoutInflater;  
      9. import android.view.View;  
      10. import android.view.ViewGroup;  
      11. import android.widget.Button;  
      12. import android.widget.Toast;  
      13.   
      14. /** 
      15.  * Created by Hejingzhou on 2016/4/9. 
      16.  */  
      17. public class Tab_Fragment_1 extends Fragment {  
      18.   
      19.   
      20.     @Nullable  
      21.     @Override  
      22.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
      23.         View viewTab_1 = inflater.inflate(R.layout.tab_1, container, false);  
      24.         Click(viewTab_1);  
      25.         return viewTab_1;  
      26.     }  
      27.   
      28.     private void Click(View view) {  
      29.         Button btnToast_1 = (Button) view.findViewById(R.id.button1_Toast);  
      30.         btnToast_1.setOnClickListener(new View.OnClickListener() {  
      31.             @Override  
      32.             public void onClick(View v) {  
      33.                 Toast.makeText(getActivity(), "第一個(gè)界面的Button", Toast.LENGTH_SHORT).show();  
      34.             }  
      35.         });  
      36.     }  
      37.   
      38. }  

      這樣的一個(gè)例子就熟悉了操作過(guò)程,和管理過(guò)程。

      3、接下來(lái)我們需要在創(chuàng)建主界面的自動(dòng)創(chuàng)建的main_activity.xml中添加TabLayout和ViewPaget  TabLayout是由android.support.design.widget包提供。這就是引入compile 'com.android.support:design:23.2.1'的原因了。

      1. package com.example.hejingzhou.sb;  
      2.   
      3.   
      4.   
      5.   
      6. import android.support.annotation.Nullable;  
      7. import android.support.design.widget.TabLayout;  
      8. import android.support.v4.app.Fragment;  
      9. import android.support.v4.app.FragmentManager;  
      10. import android.support.v4.app.FragmentPagerAdapter;  
      11. import android.support.v4.view.PagerAdapter;  
      12. import android.support.v4.view.ViewPager;  
      13. import android.support.v7.app.AppCompatActivity;  
      14. import android.os.Bundle;  
      15. import android.util.Log;  
      16. import android.view.ViewGroup;  
      17. import android.widget.Toast;  
      18.   
      19.   
      20. import java.util.ArrayList;  
      21. import java.util.List;  
      22.   
      23.   
      24. public class MainActivity extends AppCompatActivity {  
      25.     private String TAG = getClass().getSimpleName();  
      26.     private ViewPager viewPager;  
      27.     private TabLayout tabLayout;  
      28.     private List<Fragment> fragmentsList;//fragment容器  
      29.     private List<String> titleList;//標(biāo)簽容器  
      30.   
      31.   
      32.     @Override  
      33.     protected void onCreate(Bundle savedInstanceState) {  
      34.         super.onCreate(savedInstanceState);  
      35.         setContentView(R.layout.activity_main);  
      36.         load();//加載  
      37.     }  
      38.   
      39.   
      40.     private void load() {  
      41.         tabLayout = (TabLayout) findViewById(R.id.tabLayout);  
      42.         viewPager = (ViewPager) findViewById(R.id.viewPager);  
      43.   
      44.   
      45.         fragmentsList = new ArrayList<>();  
      46.         titleList = new ArrayList<>();  
      47.   
      48.   
      49.         fragmentsList.add(new Tab_Fragment_1());  
      50.         fragmentsList.add(new Tab_Fragment_2());//將fragment添加到fragmentList的list容器里  
      51.         for (int i = 0; i < 3; i++) { //重復(fù)添加 只是填充  沒(méi)什么用  
      52.             fragmentsList.add(new Tab_Fragment_1());  
      53.         }  
      54.         titleList.add("新聞");  
      55.         titleList.add("笑話");  
      56.         titleList.add("段子");  
      57.         titleList.add("視頻");  
      58.         titleList.add("圖片");  
      59.   
      60.   
      61.         tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//tab的模式如果標(biāo)簽多的話用MODE_SCROLLABLE  少的話用MODE_FIXED  
      62.         //tabLayout.setBackgroundColor(Color.BLUE);  
      63.   
      64.   
      65.         FragViewAdapter adapter = new FragViewAdapter(getSupportFragmentManager(), fragmentsList, titleList);  
      66.         viewPager.setAdapter(adapter);  
      67.         tabLayout.setupWithViewPager(viewPager);  
      68.         tabLayout.setTabsFromPagerAdapter(adapter);//雖然過(guò)時(shí)了但是不能去掉,去掉后  
      69.         //如果是滑動(dòng)操作的話沒(méi)事,但是使用標(biāo)簽點(diǎn)擊的時(shí)候就不行了。  
      70.         /** 
      71.          * @deprecated Use {@link #setupWithViewPager(ViewPager)} to link a TabLayout with a ViewPager 
      72.          *             together. When that method is used, the TabLayout will be automatically updated 
      73.          *             when the {@link PagerAdapter} is changed. 
      74.          */  
      75.         /*@Deprecated 
      76.         public void setTabsFromPagerAdapter(@Nullable final PagerAdapter adapter) { 
      77.             setPagerAdapter(adapter, false); 
      78.         }*/  
      79.   
      80.   
      81.         /** 
      82.          * 選擇tablayout的監(jiān)聽(tīng),一般是用不到的 
      83.          */  
      84.         tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {  
      85.             @Override  
      86.             public void onTabSelected(TabLayout.Tab tab) {  
      87.                 if (tab.getText().equals("新聞")) {  
      88.                     Toast.makeText(getApplicationContext(), "滑動(dòng)或點(diǎn)擊了新聞", Toast.LENGTH_SHORT).show();  
      89.                 }  
      90.                 if (tab.getPosition() == 1) {  
      91.                     Toast.makeText(getApplicationContext(), "滑動(dòng)或點(diǎn)擊了笑話", Toast.LENGTH_SHORT).show();  
      92.                 }  
      93.             }  
      94.   
      95.   
      96.             @Override  
      97.             public void onTabUnselected(TabLayout.Tab tab) {  
      98.                 if (tab.isSelected()) {  
      99.                     Toast.makeText(getApplicationContext(), "切換了Pager", Toast.LENGTH_SHORT).show();  
      100.                 }  
      101.                 Log.i(TAG, "tab.getTag()" + tab.getTag());  
      102.             }  
      103.   
      104.   
      105.             @Override  
      106.             public void onTabReselected(TabLayout.Tab tab) {  
      107.                 //不知道干啥的  
      108.             }  
      109.         });  
      110.     }  
      111.   
      112.   
      113.     /** 
      114.      * 創(chuàng)建適配器,主要是為了fragmet與標(biāo)題進(jìn)行匹配的 繼承FragmentPagerAdapter 
      115.      */  
      116.     class FragViewAdapter extends FragmentPagerAdapter {  
      117.         List<Fragment> fragmentList_;  
      118.         List<String> titleList_;  
      119.   
      120.   
      121.         public FragViewAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList) {  
      122.             super(fm);  
      123.             fragmentList_ = fragmentList;  
      124.             titleList_ = titleList;  
      125.         }  
      126.   
      127.   
      128.         @Override//fragment匹配  
      129.         public Fragment getItem(int position) {  
      130.             Log.i(TAG, "getItem  " + fragmentList_.get(position));  
      131.             return fragmentList_.get(position);  
      132.         }  
      133.   
      134.   
      135.         @Override//獲取fragment的數(shù)量  
      136.         public int getCount() {  
      137.             return titleList_.size();  
      138.         }  
      139.   
      140.   
      141.         @Override//對(duì)標(biāo)題進(jìn)行匹配  
      142.         public CharSequence getPageTitle(int position) {  
      143.             Log.i(TAG, "getPageTitle  " + titleList_.get(position));  
      144.             return titleList_.get(position);  
      145.         }  
      146.   
      147.   
      148.         @Override//銷毀 不知道這樣做行不行  
      149.         public void destroyItem(ViewGroup container, int position, Object object) {  
      150.             super.destroyItem(container, position, object);  
      151.             fragmentList_.get(position).onDestroy();  
      152.         }  
      153.     }  
      154. }  


      把陌生的方法都做注釋了,也沒(méi)啥可說(shuō)的。

      效果:
                 

      下一步就準(zhǔn)備做一個(gè)大框架 了,將側(cè)滑菜單導(dǎo)航欄和選項(xiàng)卡和浮動(dòng)Button與RecyclerView CardView都組合在一起,然后再加上一些免費(fèi)的額接口我的第一個(gè)APP要在畢業(yè)前做完。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多