2012-12-01 32 views
1

我很努力正確實現視圖尋呼機所需的概念。通過遵循一些教程和引用developer.android.com,我能夠獲得一個視圖分頁器幾乎完全功能。尋呼機將翻轉幾個文本視圖,通過「我的留言9」設置爲「我的留言0」。問題是視圖傳呼機翻轉活動底部的按鈕和右上方的紅色塊。如何將Android ViewPager設置爲僅包含一個視圖或佈局?

issues with view pager mid-flip

我想有觀點尋呼機只能通過文字週期。你能幫我理解我做錯了什麼嗎?

我有一個表示儀表盤的活動:

public class DashBoard extends FragmentActivity 
{ 
    private static final int NUMBER_OF_PAGES = 10; 

    private ViewPager mViewPager; 
    private MyFragmentPagerAdapter mMyFragmentPagerAdapter; 

    public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 
    setContentView(R.layout.dashboard); 

    mViewPager = (ViewPager) findViewById(R.id.viewpager); 
    mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); 
    mViewPager.setAdapter(mMyFragmentPagerAdapter); 

    } 

    private static class MyFragmentPagerAdapter extends FragmentPagerAdapter{ 
public MyFragmentPagerAdapter(FragmentManager fm) 
{ 
    super(fm); 
} 

@Override 
public Fragment getItem(int index) 
{ 
    return PageFragment.newInstance("My Message " + index); 
} 

@Override 
public int getCount(){ 
    return NUMBER_OF_PAGES; 
    } 
    } 

和類的頁面片段:

public class PageFragment extends Fragment { 

public static PageFragment newInstance(String title){ 

    PageFragment pageFragment = new PageFragment(); 
    Bundle bundle = new Bundle(); 
    bundle.putString("title", title); 
    pageFragment.setArguments(bundle); 
    return pageFragment; 
    } 

    @Override 
    public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle icicle){ 
    View view = inflater.inflate(R.layout.dashboard, container, false); 
    TextView textView = (TextView) view.findViewById(R.id.textViewPage); 
    textView.setText(getArguments().getString("title")); 
    return view; 

    } 

    } 

最後,我對儀表盤的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/dashbaordLabel" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    /> 
<TextView 
    android:id="@+id/textViewPage" 
    android:layout_width = "match_parent" 
    android:layout_height= "wrap_content" 
    /> 

<Button 
    android:id="@+id/newGoalButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/stringNewGoal" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:onClick="createNewGoal" 
    /> 

<RelativeLayout 
    android:id="@+id/SpaceBottom" 
    android:layout_width="match_parent" 
    android:layout_height="75dp" 
    android:layout_above="@id/newGoalButton" 
    android:background="@color/red" 
> 

    </RelativeLayout> 
    </RelativeLayout> 

關於我的xml的說明,我嘗試在一些視圖頁面標籤中包裝文本視圖,例如:

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    > 
<TextView 
    android:id="@+id/textViewPage" 
    android:layout_width = "match_parent" 
    android:layout_height= "wrap_content" 
    /> 
</android.support.v4.view.ViewPager> 

但是,所做的只是讓文本視圖從屏幕上消失,而按鈕和紅色塊仍像原始問題那樣循環。

回答

1

看起來您對Activity以及創建的View都使用相同的XML佈局。

您至少需要兩種佈局。所需的第一個佈局是託管FragmentActivity所使用的佈局。此佈局將包含您的ViewPager,以及與ViewPager一起在屏幕上保持靜態的其他內容,例如按鈕等。此佈局幾乎與您展示的內容(您的第一個XML列表)一樣。

第二種佈局是將在PageFragmentonCreateView()內膨脹的那個佈局。假設初學者只想在簡單的TextView之間翻轉,那麼onCreateView()將膨脹並返回的佈局將是專用的XML佈局,其中只包含TextView

換句話說,你的XML佈局的以下部分:

<TextView 
android:id="@+id/textViewPage" 
android:layout_width = "match_parent" 
android:layout_height= "wrap_content" 
/> 

...需要採取離開那裏,並把到一個單獨的佈局,如fragment_layout.xml,這是佈局你會膨脹在onCreateView()

+0

這就是我所需要的,幾個快速的變化,它的功能正如我所希望的那樣。感謝您的時間和知識! – Kyle

相關問題