- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为正确实现 View 寻呼机所需的概念而苦苦挣扎。通过遵循一些教程并引用 developer.android.com,我能够获得几乎功能齐全的 View 寻呼机。寻呼机将翻阅几个 TextView ,这些 TextView 已设置为从“我的消息 0”到“我的消息 9”。问题是 View 分页器还翻转了 Activity 底部的按钮和按钮正上方的红色 block 。
我想让 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 仍然像原始问题一样循环。
最佳答案
您似乎对 Activity
和 PageFragment
创建的 View
使用相同的 XML 布局.
您至少需要两种布局。所需的第一个布局是托管 FragmentActivity
使用的布局。此布局将包含您的 ViewPager
,以及与 ViewPager
一起在屏幕上保持静态的其他内容,例如按钮等。此布局几乎就是您所拥有的显示(您的第一个 XML 列表)。
第二个布局是将在 PageFragment
的 onCreateView()
内膨胀的布局。假设对于初学者,您只想在简单的 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/
我是一名优秀的程序员,十分优秀!