Android典型介面設計——ViewPage+Fragment實現區域頂部tab滑動切換
public class MainActivity extends FragmentActivity implements OnPageChangeListener{ private ViewPager viewPager; private RadioGroup rgChannel=null; private HorizontalScrollView hvChannel; private PageFragmentAdapter adapter=null; private List<Fragment> fragmentList=newArrayList<Fragment>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ rgChannel=(RadioGroup)super.findViewById(R.id.rgChannel); viewPager=(ViewPager)super.findViewById(R.id.vpNewsList); hvChannel=(HorizontalScrollView)super.findViewById(R.id.hvChannel); rgChannel.setOnCheckedChangeListener( new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group,int checkedId) { viewPager.setCurrentItem(checkedId); } }); viewPager.setOnPageChangeListener(this); initTab();//動態產生RadioButton initViewPager(); rgChannel.check(0); } private void initTab(){ List<Channel> channelList=ChannelDb.getSelectedChannel(); for(int i=0;i<channelList.size();i++){ RadioButton rb=(RadioButton)LayoutInflater.from(this). inflate(R.layout.tab_rb, null); rb.setId(i); rb.setText(channelList.get(i).getName()); RadioGroup.LayoutParams params=new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); rgChannel.addView(rb,params); } } private void initViewPager(){ List<Channel> channelList=ChannelDb.getSelectedChannel(); for(int i=0;i<channelList.size();i++){ NewsFragment frag=new NewsFragment(); Bundle bundle=new Bundle(); bundle.putString("weburl", channelList.get(i).getWeburl()); bundle.putString("name", channelList.get(i).getName()); frag.setArguments(bundle); //向Fragment傳入資料 fragmentList.add(frag); } adapter=new PageFragmentAdapter(super.getSupportFragmentManager(),fragmentList); viewPager.setAdapter(adapter); //viewPager.setOffscreenPageLimit(0); } /** * 滑動ViewPager時調整ScroollView的位置以便顯示按鈕 * @param idx */ private void setTab(int idx){ RadioButton rb=(RadioButton)rgChannel.getChildAt(idx); rb.setChecked(true); int left=rb.getLeft(); int width=rb.getMeasuredWidth(); DisplayMetrics metrics=new DisplayMetrics(); super.getWindowManager().getDefaultDisplay().getMetrics(metrics); int screenWidth=metrics.widthPixels; int len=left+width/2-screenWidth/2; hvChannel.smoothScrollTo(len, 0);//滑動ScroollView } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { // TODO Auto-generated method stub setTab(position); } }
相關推薦
Android典型介面設計——ViewPage+Fragment實現區域頂部tab滑動切換
public class MainActivity extends FragmentActivity implements OnPageChangeListener{ private ViewPager viewPager; private RadioGroup rgChannel=n
Android典型介面設計——FragmentTabHost+Fragment實現底部tab切換
一、問題描述 在上次博文中,我們使用RadioGroup+ViewPage+Fragmen實現了頂部滑動導航(檢視文章:http://www.cnblogs.com/jerehedu/p/4607599.html#dxjmsj ),接下來我們使用FragmentTabHost+F
Android典型介面設計(4)——使用ActionBar+Fragment實現tab切換
public class TBActivity extends Activity { private ActionBar actionBar; protected void onCreate(Bundle savedInstanceState) { super.onC
Android典型介面設計(6)——ActionBar Tab+ViewPager+Fagment實現滑動導航
public class MachineFragment extends Fragment { private String title; public void setArguments(Bundle bundle) { title=bundle.getSt
Android典型介面設計(5)——使用SlidingMenu和DrawerLayout分別實現左右側邊欄
public class MainActivity extends Activity { private DrawerLayout drawerLayout; private ActionBarDrawerToggle toggle; private ActionBar ac
Android典型介面設計(3)——訪網易新聞實現雙導航tab切換
public class NewsFragment extends Fragment implements OnPageChangeListener { private View view=null; private RadioGroup rgChannel=null; p
Android典型介面設計(8) ——ViewPager+PagerSlidingTabStrip實現雙導航
public class NewsFragment extends Fragment { @Override public void onAttach(Activity activity) { super.onAttach(activity); }
Android典型介面設計(7) ——DrawerLayout+Fragement+ViewPager+PagerTabStrip實現雙導航
public class MainActivity extends ActionBarActivity implements OnItemClickListener{ private DrawerLayout drawerLayout; private ActionBarDrawe
Android Studio使用ViewPager+Fragment實現仿微信滑動切換介面
前言 微信的滑動切換獲得大家一致好評,在我們開發的過程中我們也經常模仿微信的導航效果。 首先看下效果圖 效果還算不錯,可以滑動切換和點選切換,微信介面用listview展示資料,通訊錄介面用的recyclerview展示資料,在接下來就帶著大家一一
Android開發之ViewPager+ActionBar+Fragment實現響應式可滑動Tab
按照一般的思路,我們或許會這麼做:首先,使用getActionBar()方法獲得操作欄,然後我們將操作欄的導航模式設定為Tab,並新增一些Tab,然後實現TabListener介面;其次,我們將多個佈局通過Inflater()方法變成View,然後
Android使用者介面設計
View 檢視 佔據螢幕上的一塊矩形區域,負責提供元件繪製和事件處理的方法。Android 比喻成窗戶,每塊玻璃就是一個 view。 View 類是所有UI元件的基類,位於 android.view 包中;文字框元件 TextView 是 View 類的子類,位於 android.widget 包
Android 使用者介面設計之TextView
5.富文字 先說一下什麼是富文字,富文字就是對文字中一些特殊文字或者圖片的特殊顯示。例如我們我們發一段話“你還沒有還我100塊錢。”這句話我們要強調“100塊錢”這是後我們可以把它顯示為特殊的顏色,這其實就是一種富文字。有時候我們QQ聊天經常發表情,其實這也是一種富文字。富文字
Android 使用者介面設計之EditText
layout佈局檔案中相應的EditText要新增如下語句: android:password="true" 結果: 輸入限制 控制輸入的內容,例如我們要定義一個輸入手機號的輸入框,這是我們就不允許輸入字母或者漢字,我們只允
Android使用者介面設計之建立列表檢視程式
列表檢視(ListView)是Android平臺下用於顯示不定數量的資料最有用的檢視控制元件之一。在這個教程中,我們將向你展示如何使用ListView來瀏覽文章列表。 在之前的文章中,你看到了許多關於不同佈局控制元件的教程。應用程式本身非常簡單:它將顯示文章標題列表,當
Android通過介面回撥來實現資料更新(Kotlin版)
最近開發一個專案,用的是kotlin,本人kotlin水平有限,還請諒解,需要在fragment修改資料,然後更新到activity中,我使用介面回撥來完成這個需求。 先上一張圖來看一下 修改完暱稱,不僅要在fragment裡更新資料,還要同步更新act
Android UI介面設計
今天要寫的是一個簡單的手機資訊頁面顯示,用Android中的layout來實現,主要運用了相對佈局和線性佈局來完成,然後是手機資訊介面的國際化。
Android開發介面設計---音樂播放器介面
採用線性佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and
Android 通過ViewPager實現點選和滑動切換Fragment標籤頁
如上圖效果,要切換 Fragment 標籤頁,可以通過點選標籤或者滑動標籤頁來實現。 網上應該有封裝好的開源庫可以直接利用,不過這裡介紹一下自己通過 ViewPager 實現該效果。 首先是佈局檔案: <?xml version="1.0" encodi
Android從零擼美團(三) - Android多標籤tab滑動切換 - 自定義View快速實現高度定製封裝
這是【從零擼美團】系列文章第三篇 【從零擼美團】是一個高仿美團的開源專案,旨在鞏固 Android 相關知識的同時,幫助到有需要的小夥伴。 GitHub 原始碼地址:github.com/cachecats/L… Android從零擼美團(一) - 統一管理 Gradle 依賴 提取到單獨檔案中 Andr
結合Tab,ViewPager,Fragment實現簡單分頁滑動
在APP設計當中,使用ViewPager和Fragment來實現分頁滑動並不少見,該設計可以利用少量的空間來實現多內容的展示。效果圖如下: 以下是實現該功能的程式碼: MainActivity public class MainActivity e