actvity_main.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:background="#ef9f9f"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
// 主要活动 :
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
public ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
View headerView = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.custom_tab, null, false);
final LinearLayout linearLayoutOne = (LinearLayout) headerView.findViewById(R.id.ll);
final LinearLayout linearLayout2 = (LinearLayout) headerView.findViewById(R.id.ll2);
final …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何让图标不在文本顶部而是在文本侧面,但我不确定如何具体使用我的代码来做到这一点。我对 Android Studio 还很陌生,所以我将不胜感激任何帮助。
XML代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MyCabinet">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbarMyCabinet"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorPrimary">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/teacher_files_title"
android:gravity = "center"
android:id="@+id/toolbar_title"
app:fontFamily="@font/capriola"
android:textSize="20sp"
/>
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorAccent"
app:elevation="4dp">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:id="@+id/viewPagerMyCabinet"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动代码
private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_cabinet);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
viewPager = (ViewPager) findViewById(R.id.viewPagerMyCabinet);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
//add fragment …Run Code Online (Sandbox Code Playgroud) 我有带有 ViewPager 的 TabLayout 并且我只有两个选项卡:
桌子
地图
我在应用程序中支持多种语言,例如:
英语,
德语
塞尔维亚
因此,我使用塞尔维亚语作为默认语言,因为大多数用户都是说塞尔维亚语的人,但是如果我更改为其他语言,除了表格和地图选项卡之外,所有内容都已正确本地化,因为它们总是使用塞尔维亚语。
可能是什么问题?
English:
<string name="tab_map">MAP</string>
<string name="username">Username</string>
German:
<string name="tab_table">TABELLE</string>
<string name="tab_map">MAPA</string>
Serbian:
<string name="tab_table">TABELA</string>
<string name="tab_map">MAPA</string>
Run Code Online (Sandbox Code Playgroud)
这是 TabLayout 的适配器:
public class MainViewPagerAdapter extends FragmentStatePagerAdapter {
private Context context;
private LiveFragment liveFragment;
private MapFragment mapFragment;
public MainViewPagerAdapter(FragmentManager fm, Context context, LiveFragment liveFragment, MapFragment mapFragment) {
super(fm);
this.context = context;
this.liveFragment = liveFragment;
this.mapFragment = mapFragment;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0: return liveFragment;
case …Run Code Online (Sandbox Code Playgroud) 我有一个视图,它有一个 tablayout 激活 viewpager,在查看页面时它工作正常,但是如果我单击该视图上的一个项目然后返回到过去的屏幕,我会得到:
Java.Lang.IllegalStateException:FragmentManager 已经在执行事务
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
CurrentActivity = Activity;
var view = inflater.Inflate(Resource.Layout.fragment_directory, null);
_tabLayout = view.FindViewById<TabLayout>(Resource.Id.directory_tabs);
_viewPager = view.FindViewById<ViewPager>(Resource.Id.directory_pager);
SetTabLayout();
SetViewPager();
return view;
}
private void SetTabLayout()
{
var userTab = _tabLayout.NewTab();
userTab.SetText("Users");
var orgUnitsTab = _tabLayout.NewTab();
orgUnitsTab.SetText("Organizations");
_tabLayout.AddTab(userTab);
_tabLayout.AddTab(orgUnitsTab);
_tabLayout.TabGravity = TabLayout.GravityFill;
}
private void SetViewPager()
{
var pagerAdapter = new DirectoryPagerAdapter(FragmentManager, _tabLayout.TabCount);
_viewPager.Adapter = pagerAdapter;
_viewPager.AddOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(_tabLayout));
}
Run Code Online (Sandbox Code Playgroud)
不确定它是否有所作为,但是当我离开这个视图时,我从一个片段变成了一个活动。
我在 com.google.android.material.tabs.TabItem 中设置了 android:textAllCaps="false" ,认为它仅显示全部大写的选项卡标题。
如何删除所有大写字母?
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<com.google.android.material.tabs.TabItem
android:id="@+id/TabWeekly"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/Weekly"
android:textAllCaps="false"
android:theme="@style/CustomTextAppearanceTab" />
<com.google.android.material.tabs.TabItem
android:id="@+id/TabMonthly"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/Monthly"
android:textAllCaps="false"
android:theme="@style/CustomTextAppearanceTab" />
</com.google.android.material.tabs.TabLayout>
Run Code Online (Sandbox Code Playgroud)
即使我已经为它设定了风格
<style name="CustomTextAppearanceTab" parent="TextAppearance.Design.Tab">
<item name="textAllCaps">false</item>
<item name="android:textAllCaps">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但它不起作用
我有三个选项卡,当用户转到第三个选项卡然后返回第一个选项卡时 - 第一个选项卡中的内容不会重置,表单会不断重新加载.
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scorespagemain);
viewPager = (ViewPager) findViewById(R.id.viewPager);
CAdapter cAdapter = new Adapter(getSupportFragmentManager(), ScoresPageMain.this);
viewPager.setAdapter(cAdapter);
tabLayout = (TabLayout) findViewById(R.id.tabsstuff);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
});
}
Run Code Online (Sandbox Code Playgroud)
}
CAdapter 类:
public class CAdapter extends FragmentPagerAdapter{
String names[] = new String[] {"Top Teams", "Top Scores", "Top Players"};
Context context;
public CAdapter(FragmentManager …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-tablayout
一个非常简单的例子.我想大多数人都是以这种方式实现一个标签.但标签文本只是缺失.
设计支持lib的版本是最新的24.2.0.
这是我的布局代码:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
app:tabTextColor="@android:color/darker_gray"
app:tabSelectedTextColor="@android:color/white"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TabItem
android:text="@string/tab_domain"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.design.widget.TabItem
android:text="@string/tab_upload"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.design.widget.TabItem
android:text="@string/tab_download"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
我正在使用ButterKnife 8.2.1来绑定视图对象.这是我在onCreate()中的活动代码:
final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager(),
tabs.getTabCount());
tabs.setupWithViewPager(pager);
pager.setAdapter(adapter);
pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs));
Run Code Online (Sandbox Code Playgroud)
这是我的适配器:
class DiagnosePagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
List<Fragment> fragments = new ArrayList<>();
public DiagnosePagerAdapter(FragmentManager fm, int numberOfTabs) {
super(fm);
this.mNumOfTabs = numberOfTabs;
fragments.add(new DomainFragment());
fragments.add(new UploadFragment());
fragments.add(new DownloadFragment());
}
@Override
public Fragment getItem(int position) …Run Code Online (Sandbox Code Playgroud) 我试图在我的选项卡中显示图标,我正在使用tablayout和viewpager,但是当我调用tablayout.setupWithViewPager(viewpager)时,我的图标正在消失Min sdk is 16 Target is 24 Support library 24.2.1
这就是我设置标签的方式: -
private void setUpTabs(){
tabs.setupWithViewPager(viewpager);
TabLayout.Tab discoverTab = tabs.newTab();
TabLayout.Tab placesTab = tabs.newTab();
TabLayout.Tab rewardTab = tabs.newTab();
Drawable discover = ContextCompat.getDrawable(this, R.drawable.discover);
discover.setAlpha(255);
discover.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
Drawable places = ContextCompat.getDrawable(this, R.drawable.places);
places.setAlpha(55);
places.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
Drawable rewards = ContextCompat.getDrawable(this, R.drawable.rewards);
rewards.setAlpha(55);
rewards.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
discoverTab.setIcon(discover);
placesTab.setIcon(places);
rewardTab.setIcon(rewards);
tabs.addTab(discoverTab,0);
tabs.addTab(placesTab,1);
tabs.addTab(rewardTab,2);
}
Run Code Online (Sandbox Code Playgroud)
ViewPager: -
private void setUpViewPager(){
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(DiscoverFragment.getFragment(null),"Discover");
adapter.addFrag(PlacesFragment.getFragment(null),"Places");
adapter.addFrag(RewardsFragment.getFragment(null),"Rewards");
viewpager.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
ViewPagerAdapter: -
public class ViewPagerAdapter extends …Run Code Online (Sandbox Code Playgroud) android android-layout android-viewpager material-design android-tablayout
我有一个MainActivIty,它支持两个片段,即Home和Profile。Home具有一个TabLayout,而TabLayout依次具有趋势,关注和附近三个片段。因此,问题在于,首次加载Home时,它会显示Tab片段的内容,并且Tab布局的滑块会正确移动,但是当我进行剖析然后回到home时,则不会加载Tab布局的片段,而从左向右滑动不能平稳移动这里是代码
public class MainActivity extends AppCompatActivity {
ImageButton home_btn,myProfile_btn;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
TextView txt_action_bar;
Home home;
ProfileFragment profile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
home_btn=(ImageButton)findViewById(R.id.home_btn) ;
discover_btn=(ImageButton)findViewById(R.id.discover_btn) ;
myProfile_btn=(ImageButton)findViewById(R.id.profile_btn) ;
notification_btn=(ImageButton)findViewById(R.id.notification_btn) ;
plus_btn=(ImageButton)findViewById(R.id.btn_plus) ;
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
txt_action_bar = (TextView)findViewById(R.id.toolbar_title);
displayMetrics = getResources().getDisplayMetrics();
Typeface custom_font = Typeface.createFromAsset(getAssets(),"fonts/NoteworthyLight.ttf");
txt_action_bar.setTypeface(custom_font);
setSupportActionBar(toolbar);
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
home = new Home();
profile = new ProfileFragment();
fragmentTransaction.add(R.id.main_fragment_container,home,"home");
fragmentTransaction.commit();
}
public void onClickHome(View view)
{
fragmentManager = getSupportFragmentManager();
fragmentTransaction …Run Code Online (Sandbox Code Playgroud) 在我的申请中我应该TabLayout和ViewPager.
我想选择的项目设置为填充时tabIndicatorColor在tabLayout.
我想设置填充tabIndicatorColor.
我的TabLayout XML代码:
<android.support.design.widget.TabLayout
android:id="@+id/serialDetail_tabLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/size50"
android:layout_gravity="bottom"
android:background="@color/colorPrimary"
app:tabIndicatorColor="@color/colorAccent"
app:tabSelectedTextColor="@color/colorAccent"
app:tabTextAppearance="@style/allCapsTabLayout"
app:tabTextColor="@color/white" />
Run Code Online (Sandbox Code Playgroud)
我怎么能这样?请帮我.谢谢所有<3