使用图标而不是标题标签布局 [英] Use icon instead of title in Tab layout
问题描述
我有其中有一个标签标题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:机器人=http://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屋!