Android Studio(项目收获)

取消按钮默认背景色

像按钮默认背景色为深蓝色,即使使用了background属性指定颜色也不能生效。

参考如下的解决方法:
修改/res/values/themes.xml中的指定内容如下:

复制代码
<style name="Theme.TianziBarbecue" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">

代码方式设置边距

java 复制代码
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(0, 16, 0, 16); // 分别为上下左右的外边距
textView.setLayoutParams(layoutParams);

设置控件边框

设置边框步骤:在drawable文件下新建xml文件 >> 设置边框样式 >> 在background属性中引入边框样式

XML 复制代码
// 1. 设置全边框
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#FFFFFF" />
    <stroke
        android:width="1dp"
        android:color="#000000" />
    <padding
        android:bottom="0.1dp"
        android:left="0.5dp"
        android:right="0.5dp"
        android:top="0dp" />
</shape>


// 2. 设置部分边框
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 连框颜色值 -->
    <item>
        <shape>
            <solid android:color="#000000" />
        </shape>
    </item>
    <!-- 主体背景颜色值 -->
    <item android:top="1dp">   <!--设置只有底部有边框-->
        <shape>
            <solid android:color="#ffffff" />
        </shape>
    </item>
</layer-list>

// 3. 同时设置边框和背景色
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FF0000" />  <!-- 设置背景颜色 -->
    <stroke
        android:width="1dp"
        android:color="#000000" />  <!-- 边框线颜色 -->
</shape>

连接真机(手机)调试

要连接自身的 Android 设备进行测试,需要确保以下步骤已完成:

  1. 在 Android 设备上启用开发者选项。

  2. 在 Android 设备上启用 USB 调试模式。

  3. 使用 USB 电缆将 Android 设备连接到您的计算机,华为手机需要更改USB连接方式为"MIDI"。

  4. 在Tools >> Device Manager >> Physical列表找到连接手机并启动即可。

刷新页面

(1) 在Adapter中

dataList.remove(data);

notifyDataSetChanged();
(2) 在Activity中

MyAdapter myAdapter = new MyAdapter(context,data);

listView.setAdapter(MyAdapter);

水平和竖直可滚动容器

XML 复制代码
// 水平
<HorizontalScrollView>
	<LinearLayout>
		在这里添加元素
	</LinearLayout>
</HorizontalScrollView>


// 竖直
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <!-- 在这里动态添加子元素 -->
    </LinearLayout>
</ScrollView>

Spinner设置背景色和数据集

java 复制代码
// 1. 在layout下新建custom_spinner_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FF0000"  <!-- 设置背景颜色 -->
    android:textColor="#000000"   <!-- 设置文本颜色 -->
    android:padding="8dp"
    android:textSize="18sp" />
    
    
// 2. 定义数据集
ArrayList<String> items = new ArrayList<>();
data.add("item1");
data.add("item2");
data.add("item3");

// 3. 创建一个 ArrayAdapter,并为Spinner设置自定义的下拉列表项布局
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// 4. 将ArrayAdapter设置为 Spinner 的适配器
Spinner spinner = findViewById(R.id.spinner);
spinner.setAdapter(adapter);

view.setTag传入多值

问题描述:

如果使用setTag两次及其以上则会造成前后覆盖,即最终只能获取到一个最终传入值;
解决方法:

当我们需要传入两个以上的变量值时,可以选择对象封装(创建一个内部类,把需要传的变量封装在该类的属性中),然后我们就可以通过setTag(Object)来达到传入多个值的效果;
不可行方法:

测试过view.setTag(intKey,value)方式,该方式经过测试出现错误(IllegalArgumentException)不能达到效果

底部弹出窗口页面

java 复制代码
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(ChargeUpActivity.this);
View sheetView = getLayoutInflater().inflate(R.layout.cart,null);
cartList = sheetView.findViewById(R.id.cart_list);
CartAdapter cartAdapter = new CartAdapter(ChargeUpActivity.this, orderItemList);
cartList.setAdapter(cartAdapter);

bottomSheetDialog.setContentView(sheetView);

// 设置布局参数
FrameLayout bottomSheet = bottomSheetDialog.findViewById(com.google.android.material.R.id.design_bottom_sheet);
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) bottomSheet.getLayoutParams();
layoutParams.height = 1400; // 设置高度
bottomSheet.setLayoutParams(layoutParams);
// 清除默认动画效果
Window window = bottomSheetDialog.getWindow();
if (window != null) {
    window.setWindowAnimations(0);
}

// 滑动弹窗页面内容不会关闭弹窗,仅点击弹窗外部区域关闭弹窗
bottomSheetDialog.setCancelable(false);
bottomSheetDialog.setCanceledOnTouchOutside(true);

bottomSheetDialog.show();

计算字符串表达式

(1) 在build.gradle中引入依赖:

dependencies {

...

implementation 'io.github.jarvisjin:fin-expr:1.0.1'

}
(2) 在java中使用

Expression e = new Expression("345000*0.0157");

BigDecimal result = e.calculate(); // result 5416.5000

fragment报错

关于androidx.fragment.app.Fragment报xxx that is not a Fragment的问题:

首先去检查你调用该Fragment类的那个activity是否是继承于Activity,如果是,那么恭喜你马上找到解决方案了

1、修改继承类Activity为AppCompatActivity或者FragmentActivity

2、重新编译-部署-成功运行

英语词汇

SDK:Software Development Kit(软件开发工具包)		
AVD:Android Virtual Device(安卓模拟装置)
emulator:模拟器		
Tablet:平板		
Wear OS:穿戴操作系统			
manifest:清单			
alert:警报			
toast:弹框(烤面包)		
gravity:偏向(重力)		
hint:提示
inflate:转化			
intent:意图			  
Explicit:显式 		    
implicit:隐式
transaction:事务		 
revert:恢复			
reassgin:重新分配			
extensible:可展开的		
neutral:中立的			
instantiate:实例化

--------------

后言

在下一节将介绍项目打包成APK的相关知识

相关推荐
喵叔哟5 分钟前
重构代码中引入外部方法和引入本地扩展的区别
java·开发语言·重构
尘浮生11 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
小狮子安度因12 分钟前
PyQt的安装和再PyCharm中的配置
ide·pycharm·pyqt
不是二师兄的八戒34 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
闲暇部落1 小时前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
爱编程的小生1 小时前
Easyexcel(2-文件读取)
java·excel
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study2 小时前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
Chris _data2 小时前
二叉树oj题解析
java·数据结构