如何在没有xml的情况下使用ViewPager?

时间:2014-05-03 13:46:28

标签: android android-viewpager

我在没有UI布局xml文件的情况下编写应用程序,所以我有这个类:

package com.bps.spec;

import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;

public class SPEC extends ActionBarActivity {
    private ViewPager viewPager;
    private SearchPanel searchPanel;
    private EditorManager editorManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        viewPager = new ViewPager(this);

        searchPanel = new SearchPanel(this);
        viewPager.addView(searchPanel, 0);

        editorManager = new EditorManager(this);
        viewPager.addView(editorManager, 1);

        setContentView(viewPager);
    }
}

类SearchPanel和EditorManager正在扩展LinearLayout类,我确定它们没问题,我在没有viewPager的情况下对它们进行了测试。

public class SearchPanel extends LinearLayout {
    private TextView searchLabel;
    private EditText searchEntry;
    private ListView listView;

    public SearchPanel(Context context) {
        super(context);
        setOrientation(LinearLayout.VERTICAL);
        setGravity(Gravity.FILL_HORIZONTAL);

        searchLabel = new TextView(context);
        searchLabel.setText("Wyszukaj");
        addView(searchLabel);

        searchEntry = new EditText(context);
        addView(searchEntry);

        listView = new ListView(context);
        addView(listView);
    }

}

public class EditorManager extends LinearLayout {
    private EditText editText;

    public EditorManager(Context context) {
        super(context);
        setOrientation(LinearLayout.HORIZONTAL | LinearLayout.VERTICAL);
        setGravity(Gravity.FILL);

        editText = new EditText(context);
        addView(editText);
    }

}

问题是我无法在屏幕上看到我的小部件只有空白活动:(

我应该做些什么来展示它们吗?

2 个答案:

答案 0 :(得分:2)

  

我正在编写没有UI布局xml文件的应用程序

为什么呢?

  

问题是我无法在屏幕上看到我的小部件只是空白活动

要使用ViewPager,请不要致电addView()。相反,您需要创建一个PagerAdapter,根据需要返回页面,并使用PagerAdapterViewPager附加到setAdapter()

答案 1 :(得分:0)

查看ViewPager.setCurrentItem(int)并将其与TimerTask或Handler结合使用。

示例:

final ViewPager viewPager = ...;

final Handler h = new Handler(Looper.getMainLooper());

final Runnable r = new Runnable()

 {    
 public void run();

    {   
      viewPager.setCurrentItem(0, true);   
      h.postDelayed(r, 5000);    
    }   
};   
h.postDelayed(r, 5000);