一、button背景颜色与设置的不一样
原因:在创建项目的时候,Android studio 自动设置了一个主题
如下图:
我想是将登录按钮的背景颜色换成绿色,但显示的紫色(说明,系统主题的颜色应该是紫色)
解决方法:不使用系统的主题即可
在AndroidManifest.xml中修改android:theme
将默认的
android:theme="@style/Theme.Myapp"
修改为:
android:theme="@style/Theme.Design.NoActionBar"
二、图片未填满(宽度、高度不够)
解决方法:
通过scaleType属性来修改
android:scaleType="fitXY"
让其填满
三、依赖问题
通常我们在引入依赖的时候,去找到app目录下的build.gradel
引入依赖的格式与使用 Kotlin DSL(Kotlin 构建的领域特定语言)或 Groovy DSL(传统的 Gradle 构建脚本语言)有关。不过,基本的依赖声明格式在两种 DSL 中都是相似的。
此时有分为:
Kotlin DSL (build.gradle.kts):
dependencies {
implementation("example.example:xxx:1.0")
// 其他依赖...}
Groovy DSL (build.gradle):
dependencies {
implementation 'example.example:xxx:1.0'
// 其他依赖...
}
两者引入依赖的方式不一样
最后需要点一下这个下载依赖😀
新版本的安卓一般在创建项目的时候使用的是Kotlin DSL
四、排版布局?
可以看到view pager的高度只有84dp,一般来说我们是要将其布满整个屏幕
然后让tap位于底部,
这时我们可以将高度设为0dp
用
android:layout_weight="1"
权重设置为1,将其覆盖整个屏幕,因为tap的高度是固定的,所以weight会减去tap所占的高度
五、GsonFormatPuls自动生成代码(针对api接口)
使用GsonFormatPuls需要下载插件;
使用方法在方法体里右键鼠标,点击生成(generate),选择GsonFormatPuls
把json数据复制粘贴到框框中
这时候可能会报错,这个是经过整理的josn,我们需要将其设置成原始数据
现在再复制粘贴即可
format再OK就行了
GsonFormatPuls的设置可以参考如下设置:
也可以参考别人的设置
六、ViewPager2实现页面滑动
制定布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--
设置选中时字体颜色
app:tabSelectedTextColor="@color/isSelect"
设置默认时字体颜色
app:tabTextColor="#222222"
设置指示器的宽度自适应文字的宽度
app:tabIndicatorFullWidth="false"
设置指示器的颜色
app:tabIndicatorColor="@color/purple_200"
设置超出字体内容超出一屏,可以滑动
app:tabMode="scrollable"
-->
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/gray"
app:tabIndicatorFullWidth="false"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/isSelect"
app:tabTextColor="#222222" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.appcompat.widget.LinearLayoutCompat>
public class MainActivity extends AppCompatActivity {
private String[] titles = {"标题1", "标题2", "标题3", "标题4", "标题5"};
private TabLayout tab_layout;
private ViewPager2 viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
viewPager = findViewById(R.id.viewPager);
tab_layout = findViewById(R.id.tab_layout);
//设置adapter
viewPager.setAdapter(new FragmentStateAdapter(this) {
@NonNull
@Override
public Fragment createFragment(int position) {
//创建 NewsTabFragment页面
String title = titles[position];
TabNewsFragment tabNewsFragment = TabNewsFragment.newInstance(title);
return tabNewsFragment;
}
@Override
public int getItemCount() {
return titles.length;
}
});
//tab_layout点击事件
tab_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//设置viewPager选中当前页
viewPager.setCurrentItem(tab.getPosition(),false);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
//viewPager和tab_layout关联在一起
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tab_layout, viewPager, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
tab.setText(titles[position]);
}
});
tabLayoutMediator.attach();
}
}