【问题标题】:Add custom view to tab将自定义视图添加到选项卡
【发布时间】:2014-08-29 16:21:05
【问题描述】:

我想为我的标签添加自定义视图。我研究了互联网,但找不到好的教程。我正在onCreate 事件中添加带有此代码的标签。

        private String[] tabs = { "Tab 1", "Tab 2"};
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

我没有任何标签的 xml 文件。

我该怎么做?可以举个例子吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    首先我建议你使用:

    https://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/SlidingTabLayout.html

    并且不要使用操作栏标签。

    这是google play app 的标签的源代码。 之后,您可以创建自己的布局,使用 mSlidingTabLayout.setCustomTabView(int layoutResId, int textViewId) 为 SlidingTabLayout 选项卡视图添加自定义布局。看看:

    Android SlidingTabLayout with icons

    完整示例。

    <?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.example.android.common.view.SlidingTabLayout
              android:id="@+id/sliding_tabs"
              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="0px"
              android:layout_weight="1"
              android:background="@android:color/white"/>
    
    </LinearLayout>
    

    在您的fragmentactivity

    mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
    mViewPager.setAdapter(new MyAdapter());
    mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
    mSlidingTabLayout.setViewPager(mViewPager);
    

    mViewPager 的适配器必须覆盖下面的方法

     @Override
            public CharSequence getPageTitle(int position) {
                return your tab title;
            }
    

    更新:

    第一步是为每个标签创建自定义布局,因此:

         <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:gravity="center_vertical"
        android:paddingLeft="6dip"
        android:minHeight="?android:attr/listPreferredItemHeight"
    />
    

    那么当你想将标签添加到操作栏时,你必须这样做:

        ActionBar.Tab tab1=actionBar.newTab();
        tab1.setTabListener(this);
        tab1.setCustomView(R.layout.tab);
        TextView txt1 = (TextView)tab1.getCustomView().findViewById(R.id.text1);
        txt1.setText("Tab 1");
    

    【讨论】:

    • 我无法更改我的标签系统。因为我正在使用这个:androidhive.info/2013/10/…还有其他方法吗?
    • 为什么?这里的每一件事都是直截了当的,你只需要在布局中添加它并为其设置 viewpager 并覆盖 getTitle(),如果你想要我可以发布代码来运行它!但无论如何做你喜欢的!
    • 我会尝试。但我不想更改我的系统,因为我完成了项目中的所有内容,这是我的最后一个问题。
    • 做任何你喜欢我的兄弟 ;-) 但我认为你不需要太多改变!
    • 您能查看我的代码吗?这可以改变吗?这是主要的:pastebin.com/MgkWFBr2 这是 xml pastebin.com/vpELpNF3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多