2014-02-12 63 views
0

嗨我正在使用android應用程序。我創建了一個使用視圖分頁器的可滑動視圖,其中僅包含右端的圖像。現在我想在每個視圖的同一頁面查看器中添加一些文字瀏覽和按鈕。如何添加文本視圖和按鈕以及頁面查看器? 這裏是我的代碼如何在視圖尋呼機中添加多個內容?

Swipe_adapter.java

public class Swipe_adapter extends PagerAdapter { 
    Context context; 
    private int[] GalImages = new int[] { 
    R.drawable.app1, 
    R.drawable.app2, 
    R.drawable.gosms 
    }; 

    ArrayList<HashMap<String,String>> list=new ArrayList<HashMap<String, String>>(); 
    Map map=new HashMap(); 

    String[] str=new String[] 
         { 
     "app1","app2","app3" 

         }; 

    Swipe_adapter(Context context){ 
    this.context=context; 
    } 
    @Override 
    public int getCount() { 
    return GalImages.length; 
    } 

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

    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
    ImageView imageView = new ImageView(context); 
    int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium); 
    imageView.setPadding(padding, padding, padding, padding); 
    imageView.setScaleType(ImageView.ScaleType.FIT_END); 
    imageView.setImageResource(GalImages[position]); 
    ((ViewPager) container).addView(imageView, 0); 
    return imageView; 
    } 

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

這裏是我的片段類

public class FeaturedFragment extends Fragment { 

     @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_featured, container, false); 
     ViewPager viewPager = (ViewPager)rootView.findViewById(R.id.view_pager); 
     Swipe_adapter adapter = new Swipe_adapter(getActivity()); 
     viewPager.setAdapter(adapter); 

     return rootView; 
    } 
    } 

回答

0

您可以創建一個包含圖片,按鈕,文字的佈局。然後在尋呼機適配器instantiateItem

mylayout.xml

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

    <TextView 
     android:id="@+id/tv_myText" 
     style="?android:textAppearanceMedium" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <ImageView 
     android:id="@+id/imgMap" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:scaleType="center" /> 


    <Button 
     android:id="@+id/btnTopup" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" />   

</RelativeLayout> 

膨脹該佈局在您的PagerAdapter使用

public Object instantiateItem(ViewGroup container, int position) { 

    LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
    View myView = inflater.inflate(R.layout.mylayout, null); 
     //Access yout textView, ImageView, Button like below 
    TextView myText = (TextView)myView.findViewById(R.id.tv_myText); 

    return myView; 
    } 

上下文可以通過將其在PagerAdapter構造從調用活動來獲得。

希望這會有所幫助。

+0

因此,對於每次滑動,我需要像你說的那樣創建單獨的xml,實際上我想像上面的代碼一樣在xml中加載這些內容 –

+0

如果你的每個頁面都有相同的佈局,就像我的示例1中的textview,1個imageview和1個按鈕一樣,每頁都有相同的xml,只要根據位置參數爲控件分配不同的值即可。否則,如果每個頁面的佈局不一樣,那麼不幸的是,您必須爲每個頁面創建一個佈局。 –

0

我使用的時候邁克·奧爾蒂斯的TouchImageView(變焦功能)一ViewPager內(我只能得到採取一個主視圖,在這種情況下,擴展ImageView)遇到了同樣的問題,並制定了一個巧妙的解決辦法。我想將一些動態文本添加到用戶刷過的一系列地圖中,添加「地圖3/13」等作爲疊加層。我通過實例化ViewPager適配器之外的額外視圖(在我的情況下爲TextView),然後將onPageChangeListener添加到更新textView的viewPager對象來解決此問題。

首先,我成立了XML採取兩種觀點(在RelativeLayout使文本疊加圖像):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayoutPager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<org.mypackagename.ExtendedViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" /> 

<TextView 
    android:id="@+id/myTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/viewpager" 
    android:layout_alignLeft="@id/viewpager" 
    android:layout_alignRight="@id/viewpager" 
    android:layout_alignTop="@id/viewpager" 
    android:layout_gravity="right" 
    android:layout_weight="1.0" 
    android:gravity="right" 
    android:paddingRight="5dip" 
    android:paddingTop="5dp" 
    android:text="" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textStyle="bold" /> 

</RelativeLayout> 

我ViewPager適配器instantiateItem方法只處理TouchImageView觀點:

public View instantiateItem(ViewGroup container, int pos) { 
     TouchImageView img = new TouchImageView(container.getContext()); 
     img.setImageDrawable((Drawable) imageHolder.get(pos)); 
     container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
     return img; 
} 

最後,我在創建了TextViewViewPager視圖後創建了onCreate方法中的監聽器:

vPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     private int currentPage; 

     @Override 
     public void onPageSelected(int pos) { 
      currentPage = pos; 
      StringBuilder sb = new StringBuilder(); 
      sb.append("Map "); 
      sb.append((pos + 1)); 
      sb.append("/"); 
      sb.append(allMaps.size()); 
      myTextView.setText(sb); 
     } 

     public final int getCurrentPage() { 
      return currentPage; 
     } 
}); 

現在,當我滑過地圖時,TextView也會更新。您不能在適配器instantiateItem方法中執行此操作,因爲該位置似乎無法反映您通過滑動更新的頁面(不知道爲什麼!)...

相關問題