当前位置: 首页 > 知识库问答 >
问题:

framelayout内部的viewpager

靳举
2023-03-14
public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentManager FM = getSupportFragmentManager();
        FragmentTransaction FT = FM.beginTransaction();

        Fragment_ViewPager f_pager = new Fragment_ViewPager();
        FT.add(R.id.fragment_container, f_pager);
        FT.commit();

    }
}
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</FrameLayout>

fragment_viewpager.java

private static final int[] ICONS = new int[] { R.drawable.ic_launcher,  R.drawable.ic_launcher,  R.drawable.ic_launcher };
    private FragmentPagerAdapter mFragmentPagerAdapter;
    private ViewPager mViewPager;
    private TabPageIndicator mTabPagerIndicator;

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

        View v = inflater.inflate(R.layout.f_pager, container, false);

        mFragmentPagerAdapter = new Adapter_ViewPager(getActivity().getSupportFragmentManager(), ICONS);
        mViewPager = (ViewPager)v.findViewById(R.id.view_pager_inicio);
        mViewPager.setAdapter(mFragmentPagerAdapter);
        mTabPagerIndicator = (TabPageIndicator)v.findViewById(R.id.tab_indicator_inicio);
        mTabPagerIndicator.setViewPager(mViewPager);


        return v;

    }

fragment_viewpager.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/tab_indicator_inicio"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        />

        <android.support.v4.view.ViewPager
        android:id="@+id/view_pager_inicio"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

</LinearLayout>

adapter_viewpager.java

private static int[] ICONS = null;
    private Fragment mFragment = null;

    public Ad_inicio(FragmentManager fm,  int[] icons) {
        super(fm);
        ICONS = icons;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:
            mFragment = new Fragmento_uno();
            break;
        case 1:
            mFragment = new Fragmento_dos();
            break;
        case 2:
            mFragment = new Fragmento_tres();
            break;
        default:
            break;
        }
        return mFragment;
    }



    @Override
    public int getIconResId(int index) {
        return ICONS[index];
    }

    @Override
    public int getCount() {
        return ICONS.length;
    }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragmento_One, container, false);

        return v;

    }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="uno" />

</LinearLayout>

共有1个答案

呼延鸿畅
2023-03-14

对于adapter_viewpager类,除了默认的构造函数(FragmentManager)之外,不要使用其他构造函数!

我认为,当您的活动重新启动时,Android调用默认构造函数,图标将为空。

试着在那里放一个断点,看看循环后图标的值是多少。

 类似资料:
  • 6.2.3.FrameLayout FrameLayout(帧布局)将其下的子元素相互覆盖起来,就像一副扑克牌,只留一个显示在外面。它可以用于标签的实现,也可以作为以后要用的控件的临时存放地。

  • 我有这样的布局: 在开始时,视图是一个半透明视图,它位于布局中所有内容的顶部。当我按下按钮时,我想将FrameLayout放在视图的顶部。我尝试了方法和,之后我调用了,但它们对我都不起作用。我觉得跟海拔属性有关系。 如有任何帮助,我们将不胜感激。谢谢你!

  • 我是编程新手。我在使用GraphicalLayout,然后当我阅读xml文件时,我看到了FrameLayout。然后我搜索了一下,但找不到有用的东西。什么是FrameLayout?它做什么?

  • 主要内容:本节引言,1.常用属性,2.实例演示,本节小结本节引言 FrameLayout(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!虽然默认会将控件放置在左

  • 嗨,我试图从动画视图生成gif 简而言之,我在FrameLayout中有了ImageView和动画视图,现在我想生成主FrameLayout的gif,最低sdk级别19。getDrawingCache位图并将它们按顺序排列成gif可能会导致内存越界问题。 当我点击“开始录制”时,我想要特定视图的gif或视频。

  • FrameLayout 应该说是 Android 常用UI布局里面最简单的一种,顾名思义,它的布局方式就是将 View 一帧一帧的叠加到一起,有点类似 Photoshop 里面的图层的概念。在学习 FrameLayout 的过程中,你会发现基于它可以设计出很多有意思的 Android UI。那么接下来,我们来一起一探究竟。 1. FrameLayout 的特性 FrameLayout 是最简单且最