草庐IT

android - fragment 内的 Viewpagerindicator

coder 2023-12-12 原文

我使用 SherlockActionBar 创建了一个漂亮的界面。在横向模式下,您会看到 listfragment 和“detailsfragment”。

现在我想在 detailsframe 中添加一个 viewpageindicator ( https://github.com/JakeWharton/Android-ViewPagerIndicator ),所以我看起来像这样:

--------------------------|
|_1___|TAB1 | TAB2 | ETC  |
|_2___|-------------------|
|_3___|Example: content   |
|_4___| TAB1 of listitem 1| 
|_5___|___________________|

我希望这是清楚的。所以基本上我会在 fragment 中放置一个 FragmentManager/TabPageIndicator。

我这可能吗?我想不通.. :(

谢谢!

最佳答案

您不应该将 Fragment 放在 Fragment 中。但是,您可以将 ViewPager 放入 fragment 中并获得您要查找的结果。

不久前,我的一个应用程序遇到了同样的问题(只是我希望 ViewPager 包含一些 ListView)。这是最终结果(见线条;红色包含 Fragment,蓝色 ViewPagerIndicator,绿色 ViewPager):

我通过以下步骤完成了此操作。首先,对于细节 fragment ,我创建了以下 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/viewpagerIndicator"
        android:layout_height="wrap_content"
        android:layout_width="match_parent" />
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

</LinearLayout>

然后,我设置了一个自定义的 PagerAdapter 来填充 ViewPager 和 TabPageIndicator:

public class MainPagerAdapter extends PagerAdapter implements TitleProvider {

    // constructor
    ...        

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // remove the object (we don't want to keep it in memory as it will get recreated and cached when needed)

        ViewPager viewPager = (ViewPager) container;
        View view = (View) object;
        viewPager.removeView(view);
    }

    @Override
    public Object instantiateItem(View pager, final int position) {
        // inflate your 'content'-views here (in my case I added a listview here)
        // similar to a listadapter's `getView()`-method

        View wrapper = ... // inflate your layout
        ... // fill your data to the appropriate views

        ((ViewPager) pager).addView(wrapper);
    }

    public String getTitle(int position) {
        ... // return the title of the tab
    }
}

接下来,在我的 fragment 中,我设置了以下内容:

public class MainFragment extends Fragment {

    private MainPagerAdapter pagerAdapter;
    private TabPageIndicator mIndicator;
    private ViewPager viewPager;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        View detailsFrame = context.findViewById(R.id.details_fragment);
        // setup your adapter: pass data, etc.
        this.pagerAdapter = new MainPagerAdapter(...);
        this.viewPager = (ViewPager) context.findViewById(R.id.viewpager);
        viewPager.setAdapter(pagerAdapter);

        this.mIndicator = (TabPageIndicator) context.findViewById(R.id.viewpagerIndicator);
        this.mIndicator.setViewPager(viewPager);
    }
}

关于android - fragment 内的 Viewpagerindicator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9699881/

有关android - fragment 内的 Viewpagerindicator的更多相关文章

  1. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 如何在ruby中提取方括号内的内容 - 2

    我正在尝试提取方括号内的内容。到目前为止,我一直在使用它,它有效,但我想知道我是否可以直接在正则表达式中使用某些东西,而不是使用这个删除功能。a="Thisissuchagreatday[coolawesome]"a[/\[.*?\]/].delete('[]')#=>"coolawesome" 最佳答案 差不多。a="Thisissuchagreatday[coolawesome]"a[/\[(.*?)\]/,1]#=>"coolawesome"a[/(?"coolawesome"第一个依赖于提取组而不是完全匹配;第二个利用前瞻和

  4. ruby - block 内的实例评估 - 2

    我有一个Builder类,可让您添加到其中一个实例变量:classBuilderdefinitialize@lines=[]enddeflinesblock_given??yield(self):@linesenddefadd_line(text)@lines现在,我该如何改变它my_builder=Builder.newmy_builder.lines{|b|b.add_line"foo"b.add_line"bar"}pmy_builder.lines#=>["foo","bar"]进入这个?my_builder=Builder.newmy_builder.lines{add_li

  5. ruby - 打印一个范围内的数字 - 2

    我正在尝试使用以下代码打印1到50之间的所有数字:[1..50].each{|n|putsn}但是控制台打印[1..50]我想打印这样的东西1个2个3个4个...50 最佳答案 试试下面的代码:(1..50).each{|n|putsn}问题是您使用的是[]定界符而不是()定界符。 关于ruby-打印一个范围内的数字,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14528573

  6. ruby-on-rails - FactoryGirl工厂特征内的序列不使用主序列计数器 - 2

    我有以下工厂:FactoryGirl.definedofactory:foodosequence(:name){|n|"Foo#{n}"}trait:ydosequence(:name){|n|"Fooy#{n}"}endendend如果我跑create:foocreate:foocreate:foo,:y我得到Foo1,Foo2,Fooy1。但我想要Foo1,Foo2,Fooy3。我怎样才能做到这一点? 最佳答案 经过smile2day'sanswer的一些提示后和thisanswer,我得出以下解决方案:FactoryGirl.

  7. ruby - 有没有办法匹配两个双引号内的双引号? - 2

    我尝试了以下正则表达式,但它匹配所有双引号:(?>(?这是文本的示例:"[\"mycarslastnight\",\"Burger\",\"Decaf\"shirt\",\"Mocha\",\"marshmallows\",\"CoffeeMission\"]"我要匹配的模式是第2行中双引号之间的双引号 最佳答案 一般来说,我会说:不。给定一个字符串:\"Burger\"\"Decaf\"shirt\"你如何确定哪个\"是多余的(不匹配的)?这个是在Burger之后,还是在Decaf之后,还是一个在shirt之后?还是在任何这些词之

  8. ruby - 为什么括号内的换行符会改变算术结果? - 2

    为什么下面的表达式会这样解析?括号的优先级应该高于换行符,不是吗?3-(1+1)#=>13-(1+1)#=>2省略加号也会让表达式计算为2:3-(11)#=>2如果我声明为连续的换行符(转义)或将加号移动到第一行,则会实现所需的行为:3-(1\+1)#=>13-(1+1)#=>1 最佳答案 这是因为Ruby将新行识别为表达式的结尾,除非表达式不完整。例如,(1+1)与相同(1;+1)这与+1相同,因为返回了括号内的最后一个表达式。这进一步与1相同。如果行尾有+,则表达式不完整,因此会继续到下一行。这使得:3-(1+1)被解释为3-(

  9. ruby - Chef - 提供者内的模板找不到源 - 2

    我有一些nginx站点的资源和提供程序,它可以为站点写出配置文件。action:startdotemplate"/etc/nginx/sites-enabled/my_site"dosource"nginx_site.conf.erb"notifies:reload,"service[nginx]"endend当我从另一本Recipe中使用它时,找不到模板nginx_site.conf.erb,因为Chef正在寻找调用此资源的模板。有没有办法告诉Chef在nginx资源和提供者Recipe中寻找模板? 最佳答案 您可以为templa

  10. ruby-on-rails - require_tree 是否需要 'vendor/assets' 和 'lib/assets' 内的文件? - rails - 2

    我了解到,在生产模式下预编译Assets期间,如果我们不明确需要任何其他特定来源的文件,Rails只会默认从“app/assets”获取Assets像“vendor/assets”和“lib/assets”。我有一个问题:Willrequire_tree.loadassetsfrom'vendor/assets'and'lib/assets'? 最佳答案 不,require_tree.只会加载本地目录中的Assets,因此require_tree之后的点仅指定应用程序Assets文件所在的目录。如果你想在vendor/assets和

随机推荐