Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在两个不同的片段中设置两种不同的字体(TabLayout)_Java_Android_Android Recyclerview_Fonts_Android Tablayout - Fatal编程技术网

Java 如何在两个不同的片段中设置两种不同的字体(TabLayout)

Java 如何在两个不同的片段中设置两种不同的字体(TabLayout),java,android,android-recyclerview,fonts,android-tablayout,Java,Android,Android Recyclerview,Fonts,Android Tablayout,我有一个应用程序使用标签布局和回收视图获取项目。我有两个不同的标签,我想用两种不同的字体。我有一个活动,tabsi有第一个片段,第二个片段 我可以使用RecyclerView_适配器更改整个应用程序的字体。但我不想改变整个应用程序的字体。在第一个片段(第一个选项卡)中,我想使用Arial和文本大小20 sp,在第二个片段中,我想使用Comic Sans和文本大小16 sp 我怎样才能做到这一点,可能吗 OneActivity.Java public class OneActivity exten

我有一个应用程序使用标签布局和回收视图获取项目。我有两个不同的标签,我想用两种不同的字体。我有一个活动,tabsi有第一个片段,第二个片段

我可以使用RecyclerView_适配器更改整个应用程序的字体。但我不想改变整个应用程序的字体。在第一个片段(第一个选项卡)中,我想使用Arial和文本大小20 sp,在第二个片段中,我想使用Comic Sans和文本大小16 sp

我怎样才能做到这一点,可能吗

OneActivity.Java

public class OneActivity extends AppCompatActivity {
   private static Toolbar toolbar;
   private static ViewPager viewPager;
   private static TabLayout tabLayout;
   private static BottomNavigationView bottomNavigationView;

   private ImageButton forwardbtn, backwardbtn, pausebtn, playbtn;
   private MediaPlayer mPlayer;
   private TextView songName, startTime, songTime;
   private SeekBar songPrgs;
   private static int oTime =0, sTime =0, eTime =0, fTime = 15000, bTime = 15000;
   private Handler hdlr = new Handler();


   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_one);
       backwardbtn = (ImageButton)findViewById(R.id.btnBackward);
       forwardbtn = (ImageButton)findViewById(R.id.btnForward);
       playbtn = (ImageButton)findViewById(R.id.btnPlay);
       pausebtn = (ImageButton)findViewById(R.id.btnPause);

       startTime = (TextView)findViewById(R.id.txtStartTime);
       songTime = (TextView)findViewById(R.id.txtSongTime);

       mPlayer = MediaPlayer.create(this, R.raw.deneme);
       songPrgs = (SeekBar)findViewById(R.id.sBar);
       songPrgs.setClickable(false);
       pausebtn.setEnabled(false);


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


       viewPager = (ViewPager) findViewById(R.id.viewPager);
       setupViewPager(viewPager);

       tabLayout = (TabLayout) findViewById(R.id.tabLayout);
       tabLayout.setupWithViewPager(viewPager);//setting tab over viewpager

       bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavigationView);


       //Implementing tab selected listener over tablayout
       tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
           @Override
           public void onTabSelected(TabLayout.Tab tab) {
               viewPager.setCurrentItem(tab.getPosition());//setting current selected item over viewpager
               switch (tab.getPosition()) {
                   case 0:
                       Log.e("TAG","TAB1");
                       break;
                   case 1:
                       Log.e("TAG","TAB2");
                       break;
               }
           }

           @Override
           public void onTabUnselected(TabLayout.Tab tab) {
           }

           @Override
           public void onTabReselected(TabLayout.Tab tab) {
           }
       });

       playbtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Toast.makeText(OneActivity.this, "One Oynatılıyor", Toast.LENGTH_SHORT).show();
               mPlayer.start();
               eTime = mPlayer.getDuration();
               sTime = mPlayer.getCurrentPosition();
               if(oTime == 0){
                   songPrgs.setMax(eTime);

               }
               songTime.setText(String.format("%d dk, %d sn", TimeUnit.MILLISECONDS.toMinutes(eTime),
                       TimeUnit.MILLISECONDS.toSeconds(eTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. toMinutes(eTime))) );
               startTime.setText(String.format("%d dk, %d sn", TimeUnit.MILLISECONDS.toMinutes(sTime),
                       TimeUnit.MILLISECONDS.toSeconds(sTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. toMinutes(sTime))) );
               songPrgs.setProgress(sTime);
               hdlr.postDelayed(UpdateSongTime, 100);
               pausebtn.setEnabled(true);
               playbtn.setEnabled(false);
           }
       });
       pausebtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               mPlayer.pause();
               pausebtn.setEnabled(false);
               playbtn.setEnabled(true);
               Toast.makeText(getApplicationContext(),"One Duraklatıldı", Toast.LENGTH_SHORT).show();
           }
       });
       forwardbtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if((sTime + fTime) <= eTime)
               {
                   sTime = sTime + fTime;
                   mPlayer.seekTo(sTime);
               }
               else
               {
                   Toast.makeText(getApplicationContext(), "Daha fazla ileri sarılamaz", Toast.LENGTH_SHORT).show();
               }
               if(!playbtn.isEnabled()){
                   playbtn.setEnabled(true);
               }
           }
       });
       backwardbtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if((sTime - bTime) > 0)
               {
                   sTime = sTime - bTime;
                   mPlayer.seekTo(sTime);
               }
               else
               {
                   Toast.makeText(getApplicationContext(), "Daha fazla geri sarılamaz", Toast.LENGTH_SHORT).show();
               }
               if(!playbtn.isEnabled()){
                   playbtn.setEnabled(true);
               }
           }
       });
   }
   public Runnable UpdateSongTime = new Runnable() {
       @Override
       public void run() {

           sTime = mPlayer.getCurrentPosition();
           startTime.setText(String.format("%d dk, %d sn", TimeUnit.MILLISECONDS.toMinutes(sTime),
                   TimeUnit.MILLISECONDS.toSeconds(sTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(sTime))) );
           songPrgs.setProgress(sTime);
           hdlr.postDelayed(this, 100);

           songPrgs.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

               @Override
               public void onStopTrackingTouch(SeekBar seekBar) {

               }

               @Override
               public void onStartTrackingTouch(SeekBar seekBar) {

               }

               @Override
               public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                   if(mPlayer != null && fromUser){
                       mPlayer.seekTo(progress); // clear ' * 1000  '
                   }
               }
           });
       }


   };

   public void onBackPressed(){
       mPlayer.stop();
       finish();
   }

   //Setting View Pager
   private void setupViewPager(ViewPager viewPager) {
       ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
       adapter.addFrag(new FirstFragment("Android"), "Android");
       adapter.addFrag(new SecondFragment("Ios"), "Ios");
       viewPager.setAdapter(adapter);
   }


   //View Pager fragments setting adapter class
   class ViewPagerAdapter extends FragmentPagerAdapter {
       private final List<Fragment> mFragmentList = new ArrayList<>();//fragment arraylist
       private final List<String> mFragmentTitleList = new ArrayList<>();//title arraylist

       public ViewPagerAdapter(FragmentManager manager) {
           super(manager);
       }

       @Override
       public Fragment getItem(int position) {
           return mFragmentList.get(position);
       }

       @Override
       public int getCount() {
           return mFragmentList.size();
       }


       //adding fragments and title method
       public void addFrag(Fragment fragment, String title) {
           mFragmentList.add(fragment);
           mFragmentTitleList.add(title);
       }

       @Override
       public CharSequence getPageTitle(int position) {
           return mFragmentTitleList.get(position);
       }
   }
}


更新您的适配器
构造函数
onBindViewHolder()

public class RecyclerView_Adapter extends RecyclerView.Adapter<DemoViewHolder> {

private ArrayList<String> arrayList;
private Context context;

//add this
private String comingFrom;

//constructor 

public RecyclerView_Adapter(Context context, ArrayList<String> arrayList, String comingFrom) {

this.context = context;
this.arrayList = arrayList;
this.arrayList = arrayList;
this.comingFrom = comingFrom;
}

........
........



@Override
public void onBindViewHolder(DemoViewHolder holder,int position) {
Typeface customTypeOne = Typeface.createFromAsset(context.getAssets(),"arial.ttf");


final DemoViewHolder mainHolder = (DemoViewHolder) holder;
//Setting text over textview
mainHolder.title.setText(arrayList.get(position));

//check in which fragment you are 

if(comingFrom.equals("fragment_one")){

//in fragment one set some font

mainHolder.title.setTypeface(........);


}else{

//in fragment two set some other font

mainHolder.title.setTypeface(.........);


}


}
............

}
.......
.......

RecyclerView_Adapter adapter = new RecyclerView_Adapter(getActivity(), arrayList, "fragment_one");
recyclerView.setAdapter(adapter);// set adapter on recyclerview

........
.......
.......

RecyclerView_Adapter adapter = new RecyclerView_Adapter(getActivity(), arrayList, "fragment_two");
recyclerView.setAdapter(adapter);// set adapter on recyclerview

........
SecondFragment
初始化适配器时:

public class RecyclerView_Adapter extends RecyclerView.Adapter<DemoViewHolder> {

private ArrayList<String> arrayList;
private Context context;

//add this
private String comingFrom;

//constructor 

public RecyclerView_Adapter(Context context, ArrayList<String> arrayList, String comingFrom) {

this.context = context;
this.arrayList = arrayList;
this.arrayList = arrayList;
this.comingFrom = comingFrom;
}

........
........



@Override
public void onBindViewHolder(DemoViewHolder holder,int position) {
Typeface customTypeOne = Typeface.createFromAsset(context.getAssets(),"arial.ttf");


final DemoViewHolder mainHolder = (DemoViewHolder) holder;
//Setting text over textview
mainHolder.title.setText(arrayList.get(position));

//check in which fragment you are 

if(comingFrom.equals("fragment_one")){

//in fragment one set some font

mainHolder.title.setTypeface(........);


}else{

//in fragment two set some other font

mainHolder.title.setTypeface(.........);


}


}
............

}
.......
.......

RecyclerView_Adapter adapter = new RecyclerView_Adapter(getActivity(), arrayList, "fragment_one");
recyclerView.setAdapter(adapter);// set adapter on recyclerview

........
.......
.......

RecyclerView_Adapter adapter = new RecyclerView_Adapter(getActivity(), arrayList, "fragment_two");
recyclerView.setAdapter(adapter);// set adapter on recyclerview

........

您是否尝试过在RecyclerView_适配器中添加一个参数,如isIosFont,并需要将其传递给DemoViewHolder(视图,布尔isIosFont)的构造函数,然后在此基础上设置字体?@Côả我没有。事实上,我甚至不明白你的建议:)。我是Android的新手,我正在尝试做一些教程、解释和youtube视频。你对这两个片段都使用相同的适配器吗?非常感谢@Hasan Bou Taam它工作得非常好:)如果可以,我会给千张绿色支票:)我从2天开始就一直在尝试,再次感谢。哈哈哈“千张支票”,很好,很高兴能提供帮助。