记录⼀下⾃⼰在写记账APP时遇到的问题(⼀)1.在为Button设置android:background="@drawable/main_recordbtn_bg"背景时不⽣效
解决⽅法:在res/l ⽂件中,
parent=“Theme.MaterialComponents.DayNight.DarkActionBar” 修改为
parent=“Theme.MaterialComponents.DayNight.NoActionBar.Bridge” 即可!!
2.使⽤TabLayout 滑动标签时未⽣效
先来看⼀下TabLayout标签的使⽤
⾸先需要添加Tablayout的依赖material
然后写页⾯布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RecordActivity"
android:orientation="vertical"
android:background="@color/grey_f3f3f3">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageView
android:id="@+id/record_iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ih_error"
android:paddingTop="15dp"
android:onClick="onClick"
android:layout_marginLeft="10dp"/>
&le.android.material.tabs.TabLayout
android:id="@+id/record_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
app:tabGravity="center"
app:tabMode="fixed"
app:tabTextColor="@color/grey_7D7D7D"
app:tabSelectedTextColor="@color/black"
app:tabIndicatorColor="@color/black"/>
</RelativeLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/record_vp"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</LinearLayout>
页⾯布局中使⽤到了TabLayout与ViewPager,我们要让ViewPager随着TabLayout联动
接着写相对应的Java⽂件
ample.bookkeeping;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.view.View;
ample.bookkeeping.adapter.RecordPageAdapter;
ample.bookkeeping.frag_record.IncomeFragment;
ample.bookkeeping.frag_record.OutcomeFragment;
le.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
public class RecordActivity extends AppCompatActivity {
TabLayout tabLayout;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState){
setContentView(R.layout.activity_record);
//查控件
tabLayout=findViewById(d_tabs);
viewPager=findViewById(d_vp);
//2设置ViewPager加载页⾯
initPager();
}
private void initPager(){
// 初始化ViewPager页⾯的集合
怎么用java编写app软件List<Fragment> fragmentList=new ArrayList<>();
//创建收⼊和⽀出页⾯,放在Fragment中
OutcomeFragment outFrag=new OutcomeFragment();//⽀出
IncomeFragment inFrag=new IncomeFragment();//收⼊
fragmentList.add(outFrag);
fragmentList.add(inFrag);
//创建适配器
RecordPageAdapter pageAdapter=new RecordPageAdapter(getSupportFragmentManager(),fragmentList);
//设置适配器对象
viewPager.setAdapter(pageAdapter);
//将TabLayout和ViewPager进⾏关联
tabLayout.setupWithViewPager(viewPager);
}
//点击事件
public void onClick(View view){
Id()){
case d_iv_back:
finish();
break;
}
}
}
通过获取控件,初始化ViewPager页⾯集合,创建页⾯放⼊到Fragment中,使每次点击后都是不同的Fragment。⾥⾯有⼀个FragmentList,是通过Adapter添加进⼊的,具体代码如下:
ample.bookkeeping.adapter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.List;
public class RecordPageAdapter extends FragmentPagerAdapter {
List<Fragment> fragmentList;
String[]titles={"⽀出","收⼊"};
public RecordPageAdapter(@NonNull FragmentManager fm, List<Fragment> fragmentList){
super(fm);
this.fragmentList=fragmentList;
}
@NonNull
@Override
public Fragment getItem(int position){
(position);
}
@Override
public int getCount(){
return fragmentList.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position){
return titles[position];
}
}
RecordPageAdapter 继承⾃FragmentPagerAdapter ,⾥⾯需要实现三个⽅法,注意三个⽅法的返回值,⼀定要返回你所创建的FragmentList,同时也要记得重新写getPageTitle⽅法,返回你上⾯写的title,不然都是⽆法显⽰的
解决⽅法:我就是没有修改Adapter⽅法中的返回值导致使⽤滑动标签时为⽣效,显⽰都没显⽰
3. androidx.appcompat.widget.AppCompatTextView cannot be cast to android.widget.ImageView 报错
**解决:**提⽰你TextView 不能映射成ImageView,简单的说,就是你xml⽂件中定义的类型为TextView,在Java⽂件中进⾏获取时写成了ImageView类型,由于ID太多⽽写错的问题,还浪费了好长时间,改⼀下就⾏了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论