gpt4 book ai didi

android - 如何将 Android ViewPager 设置为仅包含一个 View 或布局?

转载 作者:行者123 更新时间:2023-11-30 03:53:51 25 4
gpt4 key购买 nike

我正在为正确实现 View 寻呼机所需的概念而苦苦挣扎。通过遵循一些教程并引用 developer.android.com,我能够获得几乎功能齐全的 View 寻呼机。寻呼机将翻阅几个 TextView ,这些 TextView 已设置为从“我的消息 0”到“我的消息 9”。问题是 View 分页器翻转了 Activity 底部的按钮和按钮正上方的红色 block 。

issues with view pager mid-flip

我想让 View 寻呼机只循环显示文本。你能帮我理解我做错了什么吗?

我有一个代表仪表板的 Activity :

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;
}
}

和页面 fragment 的类:

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 的注释,我尝试将 TextView 包装在一些 View 寻呼机标签中,例如:

<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>

但这只是让 TextView 从屏幕上消失,而按钮和红色 block 仍然像原始问题一样循环。

最佳答案

您似乎对 ActivityPageFragment 创建的 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() 中膨胀的布局

关于android - 如何将 Android ViewPager 设置为仅包含一个 View 或布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13661499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com