使用图标而不是标题标签布局 [英] Use icon instead of title in Tab layout

查看:304
本文介绍了使用图标而不是标题标签布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有其中有一个标签标题tablayout。我想用一个图标,而不是图标是显示。但是我我如何可以实现一点点迷惑。我试着去添加图标的列表,但我不知道在哪里把它。在此先感谢:)

我的继承人code:

 公共类城市延伸AppCompatActivity {@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.city_layout);    工具条工具栏=(栏)findViewById(R.id.toolbar);
    setSupportActionBar(工具栏);    //获取ViewPager并设置它的PagerAdapter以便它可以显示项目
    ViewPager viewPager =(ViewPager)findViewById(R.id.viewpager);
    PagerAdapter pagerAdapter =
            新PagerAdapter(getSupportFragmentManager(),City.this);
    viewPager.setAdapter(pagerAdapter);    //给这个TabLayout的ViewPager
    TabLayout tabLayout =(TabLayout)findViewById(R.id.tab_layout);
    tabLayout.setupWithViewPager(viewPager);    //遍历所有选项卡和设置自定义视图
    的for(int i = 0; I< tabLayout.getTabCount();我++){
        TabLayout.Tab标签= tabLayout.getTabAt(I)
        tab.setCustomView(pagerAdapter.getTabView(I));
    }
}
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
    //充气菜单;如果是present这增加了项目操作栏。
    。getMenuInflater()膨胀(R.menu.menu_login,菜单);
    返回true;
}@覆盖
公共布尔onOptionsItemSelected(菜单项项){
    INT ID = item.getItemId();    如果(ID == R.id.action_settings){
        返回true;
    }    返回super.onOptionsItemSelected(项目);
}类PagerAdapter扩展FragmentPagerAdapter {    字符串tabTitles [] =新的String [] {信息,酒店,餐厅,商场,事件,旅游景点};
    上下文语境;    公共PagerAdapter(FragmentManager FM,上下文的背景下){
        超(FM);
        this.context =背景;
    }    @覆盖
    公众诠释的getCount(){
        返回tabTitles.length;
    }    @覆盖
    公共片段的getItem(INT位置){        开关(位置){
            情况下0:
                返回新的信息();
            情况1:
                返回新HotelPage();
            案例2:
                返回新餐厅();
            案例3:
                返回新商城();
            情况4:
                返回新City_Events();
            情况5:
                返回新Tourist_Spot();
        }        返回null;
    }    @覆盖
    公共CharSequence的getPageTitle(INT位置){
        //根据项目位置生成标题
        返回tabTitles [位置]
    }    公共查看getTabView(INT位置){
        查看选项卡= LayoutInflater.from(City.this).inflate(R.layout.custom_vtab,NULL);
        TextView的电视=(TextView中)tab.findViewById(R.id.custom_text);
        tv.setText(tabTitles [位置]);
        返回标签;
    }
}
私人诠释[] = imageResId {
        R.drawable.user,
        R.drawable.password,
        R.drawable.back
};


解决方案

我使用杰克沃顿查看传呼机指示灯在这里。

说明(如果u不知道如何在Android Studio中添加库)

从GitHub下载zip文件并解压,
针对Android的工作室项目,进入新建 - >从提取的文件中导入模块 - >选择库文件夹。

添加库模块到项目后,
在你的文件的gradle下添加你的依赖此行

 编制项目(':库)

这是你的市级code

 公共类城市延伸AppCompatActivity {
    私有静态最后的String [] CONTENT =新的String [] {信息,酒店,餐厅,事件};
    私有静态最终诠释[]图标= INT新[] {
            // arrage图标按乌尔标题内容
            R.drawable.home,
            R.drawable.home,
            R.drawable.home,
            R.drawable.home,
    };    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.simple_tabs);        FragmentPagerAdapter适配器=新CityAdapter(getSupportFragmentManager());        ViewPager寻呼机=(ViewPager)findViewById(R.id.pager);
        pager.setAdapter(适配器);        TabPageIndicator指标=(TabPageIndicator)findViewById(R.id.indicator);
        indicator.setViewPager(寻呼机);
    }    类CityAdapter扩展FragmentPagerAdapter实现IconPagerAdapter {
        公共CityAdapter(FragmentManager FM){
            超(FM);
        }        @覆盖
        公共片段的getItem(INT位置){
            开关(位置){
                情况下0:
                    返回新的信息();
                情况1:
                    返回新的信息();
                案例2:
                    返回新的信息();
                案例3:
                    返回新的信息();
            }            返回null;
        }        @覆盖
        公共CharSequence的getPageTitle(INT位置){
            返回含量[位置%CONTENT.length] .toUpperCase();
        }        @覆盖公众诠释getIconResId(INT指数){
            返回图标[指数]
        }        @覆盖
        公众诠释的getCount(){
            返回CONTENT.length;
        }
    }
}

simple_tabs.xml

 <的LinearLayout
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:方向=垂直
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT>    < com.viewpagerindicator.TabPageIndicator
        机器人:ID =@ + ID /指示器
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_width =FILL_PARENT
        />
    < android.support.v4.view.ViewPager
        机器人:ID =@ + ID /寻呼机
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =0dp
        机器人:layout_weight =1
        />< / LinearLayout中>

这就是所有,它应该工作正常。

I have a tablayout which has a tab title. I want to use an icon instead of icon to be display. But im a little confuse on how can i implement that. Im trying to add a list of icons but i dont know where to put it. Thanks in advance :)

heres my code :

  public class City extends AppCompatActivity {

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

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // Get the ViewPager and set it's PagerAdapter so that it can display items
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    PagerAdapter pagerAdapter =
            new PagerAdapter(getSupportFragmentManager(), City.this);
    viewPager.setAdapter(pagerAdapter);

    // Give the TabLayout the ViewPager
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.setupWithViewPager(viewPager);

    // Iterate over all tabs and set the custom view
    for (int i = 0; i < tabLayout.getTabCount(); i++) {
        TabLayout.Tab tab = tabLayout.getTabAt(i);
        tab.setCustomView(pagerAdapter.getTabView(i));
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_login, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

class PagerAdapter extends FragmentPagerAdapter {

    String tabTitles[] = new String[] { "Info", "Hotels", "Restaurants", "Malls", "Events", "Tourist Spots"};
    Context context;

    public PagerAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context = context;
    }

    @Override
    public int getCount() {
        return tabTitles.length;
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                return new Info();
            case 1:
                return new HotelPage();
            case 2:
                return new Restaurant();
            case 3:
                return new Mall();
            case 4:
                return new City_Events();
            case 5:
                return new Tourist_Spot();
        }

        return null;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        // Generate title based on item position
        return tabTitles[position];
    }

    public View getTabView(int position) {
        View tab = LayoutInflater.from(City.this).inflate(R.layout.custom_vtab, null);
        TextView tv = (TextView) tab.findViewById(R.id.custom_text);
        tv.setText(tabTitles[position]);
        return tab;
    }
}
private int[] imageResId = {
        R.drawable.user,
        R.drawable.password,
        R.drawable.back
};

解决方案

I am using Jake Wharton's View pager indicator here.

Instructions (if u dont know how to add library in Android studio)

Download the zip file from github and extract it, From your project in android studio,go to New-> import module-> choose library folder from the extracted file.

after adding library module to your project, add this line under your dependencies in your gradle file

compile project(':library')

This is your City class code

public class City extends AppCompatActivity {
    private static final String[] CONTENT = new String[] { "Info", "Hotels", "Restaurants", "Events" };
    private static final int[] ICONS = new int[] {
            //arrage icons as per ur title content
            R.drawable.home,
            R.drawable.home,
            R.drawable.home,
            R.drawable.home,
    };

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

        FragmentPagerAdapter adapter = new CityAdapter(getSupportFragmentManager());

        ViewPager pager = (ViewPager)findViewById(R.id.pager);
        pager.setAdapter(adapter);

        TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);
        indicator.setViewPager(pager);
    }

    class CityAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
        public CityAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new Info();
                case 1:
                    return new Info();
                case 2:
                    return new Info();
                case 3:
                    return new Info();
            }

            return null;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return CONTENT[position % CONTENT.length].toUpperCase();
        }

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

        @Override
        public int getCount() {
            return CONTENT.length;
        }
    }
}

simple_tabs.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/indicator"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        />
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

</LinearLayout>

Thats all, it should be working fine

这篇关于使用图标而不是标题标签布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆