0000001

搜索一下:Manifest merger failed : android:exported needs to be explicitly specified for element <activity#me.zackyu.yubook.MainActivity>. Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.
基于 8 个搜索来源

这个错误提示表明在针对 Android 12 及更高版本进行开发时,manifest 文件中的某个 元素(具体为 <activity#me.zackyu.yubook.MainActivity>)缺少 android:exported 属性的显式指定。
从 Android 12(API 级别 31)开始,当相应组件具有定义的意图过滤器(intent filter)时,Android 要求所有的 manifest 文件中包含意图过滤器的组件(如 activity、service、broadcast receiver 等)必须显式声明 android:exported 属性。
解决方法如下:
打开项目中的 AndroidManifest.xml 文件,找到报错信息中提到的 <activity#me.zackyu.yubook.MainActivity> 标签,确认其中是否包含 。如果有,则需要添加 android:exported 属性,并根据该 activity 的需求设置为 true 或 false。例如:
xml
复制






在上述示例中,将 android:exported 设置为 true,表示该 activity 可以被其他应用的组件通过精确的类名启动。如果设置为 false,则该 activity 只能被同一应用、具有相同用户 ID 的应用或特权系统组件启动。如果 activity 包含 中的 android.intent.category.LAUNCHER(表示是应用的主活动),通常需要设置为 true,否则安卓系统的启动器可能无法找到并启动该应用。
如果你不想设置 android:exported 属性,也可以选择降低项目的 targetSdkVersion 为 30 或更低,但这可能会导致无法使用 Android 12 及更高版本的一些新特性和功能。修改 targetSdkVersion 的方法是在项目的 build.gradle 文件中的 defaultConfig 部分进行设置,例如:
groovy
复制
defaultConfig {
applicationId “com.example.app”
minSdkVersion 21
targetSdkVersion 30
}
深入搜索

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/about"
    android:textColor="#000000"
    android:textSize="50sp">
</TextView>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/about_me"
    android:textColor="#000000"
    android:textSize="33sp">

</TextView>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:orientation="horizontal"
    android:layout_gravity="center"
   >
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/author"
        android:textSize="15sp"

        ></TextView>

    <TextView
        android:layout_width="155dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="@string/myname"
        android:textColor="#000000"
        android:textSize="15sp"

        ></TextView>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:orientation="horizontal"
    android:layout_gravity="center">
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/wechat"
        android:textSize="15sp"
        ></TextView>

    <TextView
        android:id="@+id/text_wechat_account"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="@string/wechat_no"
        android:textColor="#000000"
        android:textSize="15sp"></TextView>
</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:orientation="horizontal"
    android:layout_gravity="center">
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/qq"
        android:textSize="15sp"
        ></TextView>

    <TextView
        android:id="@+id/text_qq_account"
        android:layout_width="156dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="@string/qq_no"
        android:textColor="#000000"
        android:textSize="15sp"></TextView>
</LinearLayout>
<TextView
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/clickcopy"
    android:textSize="10sp"></TextView>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/about_app"
    android:textColor="#000000"
    android:textSize="33sp">
</TextView>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/intro_app"
    android:layout_gravity="center">

</TextView>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/version_string"
    android:textColor="#000000"
    android:textSize="33sp">
</TextView>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/version"
    android:layout_gravity="center">

</TextView>

请帮助我优化代码
以下是优化后的代码:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/about"
    android:textColor="#000000"
    android:textSize="50sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/about_me"
    android:textColor="#000000"
    android:textSize="33sp" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/author"
        android:textSize="15sp" />

    <TextView
        android:layout_width="155dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="@string/myname"
        android:textColor="#000000"
        android:textSize="15sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/wechat"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/text_wechat_account"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="@string/wechat_no"
        android:textColor="#000000"
        android:textSize="15sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/qq"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/text_qq_account"
        android:layout_width="156dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="@string/qq_no"
        android:textColor="#000000"
        android:textSize="15sp" />
</LinearLayout>

<TextView
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/clickcopy"
    android:textSize="10sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/about_app"
    android:textColor="#000000"
    android:textSize="33sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@string/intro_app" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/version_string"
    android:textColor="#000000"
    android:textSize="33sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@string/version" />
优化的点主要在于: 为每个组件添加了结束标记,使代码结构更加清晰规范。 如果您希望进一步优化,例如添加一些样式属性或者使用更复杂的布局来适应不同屏幕尺寸,还可以做以下操作: 可以将重复出现的布局属性提取到 然后在每个 TextView 中应用这个样式: xml 复制 请帮我优化代码 以下是优化后的代码: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/everywhere"
    android:textColor="#000000"
    android:textSize="36sp" />

<Button
    android:id="@+id/button_new_record"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:text="@string/new_record"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:background="@drawable/btn_bg_normal"
    style="@style/Widget.AppCompat.Button" />

<Button
    android:id="@+id/button_records"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:layout_marginTop="30dp"
    android:text="@string/records"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:background="@drawable/btn_circle_01"
    style="@style/Widget.AppCompat.Button" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_marginTop="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/income"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/text_income"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/pay"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/text_pay"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="结余"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/text_total"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>

<Button
    android:id="@+id/textview_about_me"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_marginTop="120dp"
    android:layout_gravity="center"
    android:text="@string/about_app"
    android:textColor="#000000"
    android:textSize="20dp"
    android:background="#ffffff" />
优化点主要是为每个组件添加了结束标记,使代码更具规范性和可读性。 如果要进一步优化,还可以考虑以下几点: 将相同的布局属性提取到样式中,避免重复设置。 对于按钮的点击事件处理,可以使用 OnClickListener 接口来实现,使代码结构更清晰。 如果有更多的布局逻辑,可以考虑使用更灵活的布局管理器,如 ConstraintLayout,以更好地适配不同的屏幕尺寸和方向。 例如,创建一个样式来统一设置按钮的样式: xml 复制 然后在按钮中应用这个样式: xml 复制

把这个按钮改的更好看一些
以下是几种方式可以让这个按钮看起来更好看:
方式一:添加阴影效果
xml
复制

其中 button_background_with_shadow 是一个自定义的带有阴影效果的背景 drawable 资源。
方式二:使用渐变色背景
xml
复制

button_gradient_background 是一个渐变色的 drawable 资源。
方式三:添加边框
xml
复制

button_background_with_border 是一个带有边框的背景 drawable 资源。
方式四:使用图片作为背景
xml
复制

button_image_background 是一个图片资源。
您可以根据您的应用风格和需求选择合适的方式来美化按钮。
请写出背景代码
以下是为您提供的几种不同类型的按钮背景代码示例:
阴影背景(drawable/button_background_with_shadow.xml)
xml
复制

<?xml version="1.0" encoding="utf-8"?> 渐变色背景(drawable/button_gradient_background.xml) xml 复制 <?xml version="1.0" encoding="utf-8"?> 边框背景(drawable/button_background_with_border.xml) xml 复制 <?xml version="1.0" encoding="utf-8"?> 图片背景(drawable/button_image_background.png) 您需要自行准备一张合适的图片资源,并将其命名为 button_image_background.png 放入 drawable 文件夹中。 您可以根据具体的需求选择和修改这些背景样式。
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/income"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/text_income"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/pay"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/text_pay"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="结余"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/text_total"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp" />
</LinearLayout>

请优化以上代码,使字体更清晰
以下是优化后的代码:
xml
复制

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/income"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text_income"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/pay"
        android:textSize="20dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text_pay"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="结余"
        android:textSize="20dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text_total"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />
</LinearLayout>

通过为 TextView 添加 android:textStyle=“bold” ,使字体变为粗体,从而让字体看起来更清晰。
请修改为表格布局,左边不用加粗
以下是将上述布局修改为表格布局的代码:
xml
复制

<TableRow>
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/income"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/text_income"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold" />
</TableRow>

<TableRow>
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="@string/pay"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/text_pay"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />
</TableRow>

<TableRow>
    <TextView
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:text="结余"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/text_total"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:text="0.00"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />
</TableRow>
<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/everywhere"
    android:textColor="#000000"
    android:textSize="36sp" />

<Button
    android:id="@+id/button_new_record"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:text="@string/new_record"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:background="@drawable/button_gradient_background"
    style="@style/Widget.AppCompat.Button" />

<Button
    android:id="@+id/button_records"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:layout_marginTop="30dp"
    android:text="@string/records"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:background="@drawable/button_gradient_background"
    style="@style/Widget.AppCompat.Button" />

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <TableRow>
        <TextView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:text="@string/income"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_income"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="20sp"
            android:textStyle="bold" />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:text="@string/pay"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/text_pay"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:text="结余"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/text_total"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </TableRow>

</TableLayout>

<Button
    android:id="@+id/textview_about_me"
    android:layout_width="wrap_content"
    android:layout_height="77dp"
    android:layout_marginTop="120dp"
    android:layout_gravity="center"
    android:text="@string/about_app"
    android:textColor="#ffffff"
    android:textSize="20dp"
    android:background="@drawable/button_gradient_background" />

如何修改全屏背景,用最好看,最耐看纯色的作为背景
基于 7 个搜索来源

如果想要设置全屏的纯色背景,比较简洁的方式是在标签中添加android:background属性来指定背景颜色,例如设置为米白色#FAF9F6:
xml
复制



在上述代码中,#FAF9F6是一种米白色的十六进制颜色代码,你可以根据个人喜好将其修改为其他颜色代码,如常见的白色#FFFFFF、黑色#000000、红色#FF0000等。
如果你希望使用系统自带的主题来设置背景颜色,也可以在清单文件AndroidManifest.xml中的标签内添加android:theme属性,例如使用系统自带的白色主题@android:style/theme.light:
xml
复制


或者按照如下步骤来自定义主题并设置背景颜色:
在res/values目录下创建或打开styles.xml文件(如果没有该文件则创建一个)。
在标签内,创建一个新的

打开AndroidManifest.xml文件,找到标签,并为其添加android:theme属性,将其值设置为刚才创建的主题名称@style/MyAppTheme:
xml
复制



这样就可以使用自定义的主题来设置全屏背景颜色了。上述示例中使用的背景颜色#FAF9F6同样可以根据个人喜好修改为其他颜色代码。
另外,也可以考虑使用图片作为背景,通过将图片资源放置在drawable文件夹中,并在标签中使用android:background="@drawable/your_image"来设置背景图片(其中your_image是图片资源的名称)。但这种方式可能不如纯色背景简洁和耐看,具体取决于图片的内容和设计需求。
深入搜索
package me.zackyu.yubook;

import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class AboutMeActivity extends AppCompatActivity {

private TextView text_wechat_account;
private TextView text_qq_account;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about_me);
    text_wechat_account = findViewById(R.id.text_wechat_account);
    text_wechat_account.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            // 将文本内容放到系统剪贴板里。
            cm.setText(text_wechat_account.getText());
            Toast.makeText(AboutMeActivity.this, "复制成功,打开微信即可粘贴",Toast.LENGTH_LONG).show();//自定义的toast
        }
    });
    text_qq_account = findViewById(R.id.text_qq_account);
    text_qq_account.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            // 将文本内容放到系统剪贴板里。
            cm.setText(text_qq_account.getText());
            Toast.makeText(AboutMeActivity.this, "复制成功,打开qq即可粘贴",Toast.LENGTH_LONG).show();//自定义的toast
        }
    });
}

}

请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class AboutMeActivity extends AppCompatActivity {

private TextView textWechatAccount;
private TextView textQqAccount;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about_me);

    textWechatAccount = findViewById(R.id.text_wechat_account);
    setUpCopyClickListener(textWechatAccount, "微信");

    textQqAccount = findViewById(R.id.text_qq_account);
    setUpCopyClickListener(textQqAccount, "QQ");
}

private void setUpCopyClickListener(TextView textView, String appName) {
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            cm.setText(textView.getText());
            Toast.makeText(AboutMeActivity.this, "复制成功,打开" + appName + "即可粘贴", Toast.LENGTH_LONG).show();
        }
    });
}

}
优化点如下:
对变量名进行了一定的规范修改,使其更具可读性,例如将 text_wechat_account 改为 textWechatAccount 。
提取了设置点击复制功能的代码到一个单独的方法 setUpCopyClickListener ,提高了代码的复用性和可读性。
package me.zackyu.yubook;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.math.BigDecimal;

import me.zackyu.yubook.db.iDBHelper;

public class MainActivity extends AppCompatActivity {
private Button button_new_record;
private Button button_records;

private TextView text_income ;
private TextView text_pay;
private TextView text_total;

private TextView textview_about_me;
private iDBHelper iDBHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button_new_record = findViewById(R.id.button_new_record);
    button_records = findViewById(R.id.button_records);
    textview_about_me = findViewById(R.id.textview_about_me);
    String html = "<u>关于应用</u>";
    textview_about_me.setText(Html.fromHtml(html));
    textview_about_me.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setClass(MainActivity.this,AboutMeActivity.class);
            startActivity(intent);
        }
    });
    iDBHelper = new iDBHelper(MainActivity.this,"MyAccount.db",null,1);

    button_new_record.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setClass(MainActivity.this,NewRecordActivity.class);
            startActivity(intent);
        }
    });
    button_records .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setClass(MainActivity.this,RecordsActivity.class);
            startActivity(intent);
        }
    });
    showData();
}

@Override
protected void onResume() {
    super.onResume();
    showData();
}

private void showData(){
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    String sql_income = "select sum(amount) from MyAccount where amount >0";
    String sql_pay = "select sum(amount) from MyAccount where amount <0";

    Cursor cursor_income = sqLiteDatabase.rawQuery(sql_income,null);
    Cursor cursor_pay = sqLiteDatabase.rawQuery(sql_pay,null);
    Double income =  0.0;

    if(cursor_income.moveToFirst()){
        income = cursor_income.getDouble(0);
        text_income = findViewById(R.id.text_income);
        text_income.setText(new BigDecimal(income)
                .setScale(2,BigDecimal.ROUND_HALF_UP)
                .toString());
    }
    Double pay = 0.0;
    if(cursor_pay.moveToFirst()){
        pay = cursor_pay.getDouble(0);
        text_pay = findViewById(R.id.text_pay);
        text_pay.setText(BigDecimal.ZERO.subtract(new BigDecimal(pay))
                .setScale(2,BigDecimal.ROUND_HALF_UP)
                .toString());
    }
    double total = 0.0;
    if(income != null &&pay !=null) {
        total = income + pay;
    }
    text_total = findViewById(R.id.text_total);
    text_total.setText(new BigDecimal(total)
            .setScale(2,BigDecimal.ROUND_HALF_UP)
            .toString());


}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.math.BigDecimal;

import me.zackyu.yubook.db.iDBHelper;

public class MainActivity extends AppCompatActivity {
private Button buttonNewRecord;
private Button buttonRecords;
private TextView textIncome;
private TextView textPay;
private TextView textTotal;
private TextView textviewAboutMe;
private iDBHelper iDBHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initViews();
    setListeners();
    initDatabase();

    String html = "<u>关于应用</u>";
    textviewAboutMe.setText(Html.fromHtml(html));
    showData();
}

@Override
protected void onResume() {
    super.onResume();
    showData();
}

private void initViews() {
    buttonNewRecord = findViewById(R.id.button_new_record);
    buttonRecords = findViewById(R.id.button_records);
    textviewAboutMe = findViewById(R.id.textview_about_me);
    textIncome = findViewById(R.id.text_income);
    textPay = findViewById(R.id.text_pay);
    textTotal = findViewById(R.id.text_total);
}

private void setListeners() {
    textviewAboutMe.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, AboutMeActivity.class);
            startActivity(intent);
        }
    });

    buttonNewRecord.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, NewRecordActivity.class);
            startActivity(intent);
        }
    });

    buttonRecords.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, RecordsActivity.class);
            startActivity(intent);
        }
    });
}

private void initDatabase() {
    iDBHelper = new iDBHelper(MainActivity.this, "MyAccount.db", null, 1);
}

private void showData() {
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    String sqlIncome = "select sum(amount) from MyAccount where amount > 0";
    String sqlPay = "select sum(amount) from MyAccount where amount < 0";

    Cursor cursorIncome = sqLiteDatabase.rawQuery(sqlIncome, null);
    Cursor cursorPay = sqLiteDatabase.rawQuery(sqlPay, null);
    Double income = 0.0;

    if (cursorIncome.moveToFirst()) {
        income = cursorIncome.getDouble(0);
        textIncome.setText(new BigDecimal(income)
              .setScale(2, BigDecimal.ROUND_HALF_UP)
              .toString());
    }

    Double pay = 0.0;
    if (cursorPay.moveToFirst()) {
        pay = cursorPay.getDouble(0);
        textPay.setText(BigDecimal.ZERO.subtract(new BigDecimal(pay))
              .setScale(2, BigDecimal.ROUND_HALF_UP)
              .toString());
    }

    double total = 0.0;
    if (income!= null && pay!= null) {
        total = income + pay;
    }
    textTotal.setText(new BigDecimal(total)
          .setScale(2, BigDecimal.ROUND_HALF_UP)
          .toString());
}

}
优化点如下:
提取了初始化视图、设置监听器和初始化数据库的方法,使 onCreate 方法更加清晰简洁。
对变量名进行了一定的规范修改,使其更具可读性,例如将 button_new_record 改为 buttonNewRecord 。

<?xml version="1.0" encoding="utf-8"?>

<Button
    android:id="@+id/button_new_record"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:text="@string/new_record"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:background="@drawable/button_gradient_background"
    style="@style/Widget.AppCompat.Button" />

<Button
    android:id="@+id/button_records"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:layout_marginTop="30dp"
    android:text="@string/records"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:background="@drawable/button_gradient_background"
    style="@style/Widget.AppCompat.Button" />

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"

    android:layout_gravity="center">

    <TableRow>
        <TextView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:text="@string/income"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_income"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="20sp"
            android:textStyle="bold" />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:text="@string/pay"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/text_pay"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:text="结余"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/text_total"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </TableRow>

</TableLayout>

<Button
    android:id="@+id/textview_about_me"
    android:layout_width="wrap_content"
    android:layout_height="77dp"
    android:layout_marginTop="120dp"
    android:layout_gravity="center"
    android:text="@string/about_app"
    android:textColor="#ffffff"
    android:textSize="20dp"
    android:background="@drawable/button_gradient_background" />

该页面超过高度,请改为可滚动布局
以下是将上述布局改为可滚动布局的代码:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:background="#FAF9F6">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:text="@string/everywhere"
        android:textColor="#000000"
        android:textSize="36sp" />

    <Button
        android:id="@+id/button_new_record"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:text="@string/new_record"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/button_gradient_background"
        style="@style/Widget.AppCompat.Button" />

    <Button
        android:id="@+id/button_records"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:text="@string/records"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/button_gradient_background"
        style="@style/Widget.AppCompat.Button" />

    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_gravity="center">

        <TableRow>
            <TextView
                android:layout_width="50dp"
                android:layout_height="match_parent"
                android:text="@string/income"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/text_income"
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="30dp"
                android:text="0.00"
                android:textColor="#000000"
                android:textSize="20sp"
                android:textStyle="bold" />
        </TableRow>

        <TableRow>
            <TextView
                android:layout_width="50dp"
                android:layout_height="match_parent"
                android:text="@string/pay"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/text_pay"
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="30dp"
                android:text="0.00"
                android:textColor="#000000"
                android:textSize="20dp"
                android:textStyle="bold" />
        </TableRow>

        <TableRow>
            <TextView
                android:layout_width="50dp"
                android:layout_height="match_parent"
                android:text="结余"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/text_total"
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="30dp"
                android:text="0.00"
                android:textColor="#000000"
                android:textSize="20dp"
                android:textStyle="bold" />
        </TableRow>

    </TableLayout>

    <Button
        android:id="@+id/textview_about_me"
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:layout_marginTop="120dp"
        android:layout_gravity="center"
        android:text="@string/about_app"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:background="@drawable/button_gradient_background" />
</LinearLayout>
将最外层的LinearLayout包裹在ScrollView中,即可实现滚动效果。 请把表格改为单列,文字在上,数字在下,数字加大加粗,数字字号77sp 以下是修改后的布局代码: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:background="#FAF9F6">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:text="@string/everywhere"
        android:textColor="#000000"
        android:textSize="36sp" />

    <Button
        android:id="@+id/button_new_record"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:text="@string/new_record"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/button_gradient_background"
        style="@style/Widget.AppCompat.Button" />

    <Button
        android:id="@+id/button_records"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:text="@string/records"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/button_gradient_background"
        style="@style/Widget.AppCompat.Button" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_gravity="center"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/income"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_income"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="77sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/pay"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_pay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="77sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="结余"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_total"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="77sp"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/textview_about_me"
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:layout_marginTop="120dp"
        android:layout_gravity="center"
        android:text="@string/about_app"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:background="@drawable/button_gradient_background" />
</LinearLayout>
该代码有误,页面顶部缺少一部分,请改正 以下是修正后的代码,确保页面顶部显示完整: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:background="#FAF9F6">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:text="@string/everywhere"
        android:textColor="#000000"
        android:textSize="36sp" />

    <Button
        android:id="@+id/button_new_record"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:text="@string/new_record"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/button_gradient_background"
        style="@style/Widget.AppCompat.Button" />

    <Button
        android:id="@+id/button_records"
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:text="@string/records"
        android:textSize="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/button_gradient_background"
        style="@style/Widget.AppCompat.Button" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_gravity="center"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/income"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_income"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="77sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/pay"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_pay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="77sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="结余"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/text_total"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="0.00"
            android:textColor="#000000"
            android:textSize="77sp"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/textview_about_me"
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:layout_marginTop="120dp"
        android:layout_gravity="center"
        android:text="@string/about_app"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:background="@drawable/button_gradient_background" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="99dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/income"
    android:textColor="#000000"
    android:textSize="30sp"

    >
</TextView>
<Button
    android:background="@drawable/btn_circle"
    android:id="@+id/button_new_income_record"
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:text="@string/records"
    android:textSize="20sp"
    android:textColor="#ffffff"
    android:layout_gravity="center_horizontal"
    ></Button>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="79dp"
    android:layout_marginTop="79dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:text="@string/incometype"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/income_spinner">
    </TextView>

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomesource"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_type">
    </TextView>
    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="79dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomeaccount"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_account">
    </TextView>
    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:maxLines="1"
       >
    </EditText>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomeamount"
        android:textSize="20sp"
        android:textColor="#000000"
        android:maxLines="1"
        android:labelFor="@+id/new_income_amount">
    </TextView>
    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:inputType="numberDecimal">

    </EditText>
</LinearLayout>
请优化以上代码,与主页代码风格一致 以下是优化后的代码,使其与您提到的主页代码风格尽量保持一致: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="99dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/income"
    android:textColor="#000000"
    android:textSize="30sp" />

<Button
    android:background="@drawable/btn_circle"
    android:id="@+id/button_new_income_record"
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:text="@string/records"
    android:textSize="20sp"
    android:textColor="#ffffff"
    android:layout_gravity="center_horizontal" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="79dp"
    android:layout_marginTop="79dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:text="@string/incometype"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/income_spinner" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomesource"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_type" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="79dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomeaccount"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_account" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:maxLines="1" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomeamount"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_amount" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:inputType="numberDecimal" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="99dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/income"
    android:textColor="#000000"
    android:textSize="30sp" />

<Button
    android:background="@drawable/btn_circle"
    android:id="@+id/button_new_income_record"
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:text="@string/records"
    android:textSize="20sp"
    android:textColor="#ffffff"
    android:layout_gravity="center_horizontal" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="79dp"
    android:layout_marginTop="79dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:text="@string/incometype"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/income_spinner" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomesource"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_type" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="79dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomeaccount"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_account" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:maxLines="1" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal"
    android:layout_gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/incomeamount"
        android:textSize="20sp"
        android:textColor="#000000"
        android:labelFor="@+id/new_income_amount" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:inputType="numberDecimal" />
</LinearLayout>

页面显示不全,请增加滚动效果
以下是为上述布局添加滚动效果的代码:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="99dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp" />

    <Button
        android:background="@drawable/btn_circle"
        android:id="@+id/button_new_income_record"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:layout_gravity="center_horizontal" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="79dp"
        android:layout_marginTop="79dp"
        android:orientation="horizontal"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="77dp"
            android:text="@string/incometype"
            android:textSize="20sp"
            android:textColor="#000000"
            android:labelFor="@+id/income_spinner" />

        <Spinner
            android:id="@+id/new_income_source"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:entries="@array/income_from"
            android:textColor="#000000"
            android:textAlignment="center" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:orientation="horizontal"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:text="@string/incomesource"
            android:textSize="20sp"
            android:textColor="#000000"
            android:labelFor="@+id/new_income_type" />

        <Spinner
            android:id="@+id/new_income_type"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:entries="@array/income_to"
            android:textColor="#000000"
            android:textAlignment="center" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="79dp"
        android:orientation="horizontal"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:text="@string/incomeaccount"
            android:textSize="20sp"
            android:textColor="#000000"
            android:labelFor="@+id/new_income_account" />

        <EditText
            android:id="@+id/new_income_account"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:maxLines="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:orientation="horizontal"
        android:layout_gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:text="@string/incomeamount"
            android:textSize="20sp"
            android:textColor="#000000"
            android:labelFor="@+id/new_income_amount" />

        <EditText
            android:id="@+id/new_income_amount"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:inputType="numberDecimal" />
    </LinearLayout>
</LinearLayout>
请改为单列布局,提示词在上,选择或者输入在下,增大输入框,字号为77,限制数字输入范围,最长为9位 以下是修改后的布局代码: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp" />

    <Button
        android:background="@drawable/btn_circle"
        android:id="@+id/button_new_income_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incometype"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomesource"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeaccount"
        android:textColor="#000000"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:textSize="77sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeamount"
        android:textColor="#000000"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incometype"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomesource"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeaccount"
        android:textColor="#000000"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:textSize="77sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeamount"
        android:textColor="#000000"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9" />
    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_new_income_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff" />

</LinearLayout>

请优化以上代码,字体全布局中
以下是优化后的代码:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incometype"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomesource"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeaccount"
        android:textColor="#000000"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:textSize="77sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeamount"
        android:textColor="#000000"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9" />

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_new_income_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff" />
</LinearLayout>
上述代码主要是在格式上进行了微调,添加了必要的缩进和换行,使代码结构更加清晰易读,布局的功能和样式没有改变。如果您还希望对布局的样式、属性等进行进一步的优化,可以提供更具体的要求。 请继续优化,使所有文字居中对齐 以下是进一步优化后的代码,使所有文字都居中对齐: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">  <!-- 新增这一行,使内部元素居中 -->

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp"
        android:gravity="center" />  <!-- 每个 TextView 都设置居中 -->

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incometype"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomesource"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeaccount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:textSize="77sp"
        android:gravity="center" />  <!-- EditText 也可以设置文字居中 -->

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeamount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9"
        android:gravity="center" />

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_new_income_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:gravity="center" />  <!-- 按钮文字居中 -->
</LinearLayout>
请继续优化,背景改为米白色,输入内容不可换行 以下是继续优化后的代码: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incometype"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomesource"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeaccount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"  <!-- 输入内容不可换行 -->
        android:textSize="77sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeamount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9"
        android:gravity="center"
        android:singleLine="true" />  <!-- 输入内容不可换行 -->

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_new_income_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:gravity="center" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:layout_gravity="center"
    android:text="@string/pay"
    android:textColor="#000000"
    android:textSize="30dp">
</TextView>
<Button
    android:background="@drawable/btn_circle_01"
    android:id="@+id/button_new_pay_record"
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:text="@string/records"
    android:textSize="20dp"
    android:textColor="#ffffff"
    android:layout_gravity="center_horizontal">
</Button>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:layout_marginTop="77dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/paysource"
        android:textSize="20dp"
        android:textColor="#000000">
    </TextView>

    <Spinner
        android:entries="@array/pay_from"
        android:id="@+id/new_pay_sources"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:textAlignment="center"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/paytype"
        android:textSize="20dp"
        android:textColor="#000000">
    </TextView>
    <Spinner
        android:entries="@array/pay_for"
        android:id="@+id/new_pay_type"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:textAlignment="center"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="77dp"
        android:text="@string/payaccount"
        android:textSize="20dp"
        android:textColor="#000000"
        android:labelFor="@+id/new_pay_account">
    </TextView>
    <EditText
        android:id="@+id/new_pay_account"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:maxLines="1">

    </EditText>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="77dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="@string/payamount"
        android:textSize="20dp"
        android:maxLines="1"
        android:textColor="#000000"
        android:labelFor="@+id/new_pay_amount">
    </TextView>
    <EditText
        android:id="@+id/new_pay_amount"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:inputType="numberDecimal">

    </EditText>
</LinearLayout>

请把这个代码改变为与上面一致的风格
以下是修改为与前面一致风格的代码:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pay"
        android:textColor="#000000"
        android:textSize="30sp"
        android:gravity="center" />

    <Button
        android:background="@drawable/btn_circle_01"
        android:id="@+id/button_new_pay_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/paysource"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:entries="@array/pay_from"
        android:id="@+id/new_pay_sources"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:textColor="#000000" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/paytype"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:entries="@array/pay_for"
        android:id="@+id/new_pay_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:textColor="#000000" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/payaccount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_pay_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:textSize="77sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/payamount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_pay_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:gravity="center"
        android:singleLine="true" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/income"
        android:textColor="#000000"
        android:textSize="30sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incometype"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_income_source"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:entries="@array/income_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomesource"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_income_type"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:entries="@array/income_to"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeaccount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_income_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:inputType="text"
        android:singleLine="true"
        android:textSize="77sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/incomeamount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_income_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9"
        android:gravity="center"
        android:singleLine="true" />  <!-- 输入内容不可换行 -->

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_new_income_record"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:gravity="center" />
</LinearLayout>
上面的有一些问题,请改为与这个一致的风格 以下是为您修改后的代码: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pay"
        android:textColor="#000000"
        android:textSize="30sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/paysource"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_pay_sources"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:entries="@array/pay_from"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/paytype"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <Spinner
        android:id="@+id/new_pay_type"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:entries="@array/pay_for"
        android:textColor="#000000"
        android:textAlignment="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/payaccount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_pay_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:inputType="text"
        android:singleLine="true"
        android:textSize="77sp"
        android:gravity="center" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/payamount"
        android:textColor="#000000"
        android:textSize="20sp"
        android:gravity="center" />

    <EditText
        android:id="@+id/new_pay_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:textSize="77sp"
        android:maxLength="9"
        android:gravity="center"
        android:singleLine="true" />  <!-- 输入内容不可换行 -->

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_new_pay_record"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:text="@string/records"
        android:textSize="20sp"
        android:textColor="#ffffff"
        android:gravity="center" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
</TextView>
<ListView
    android:id="@+id/record_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</ListView>

请改为所有文字居中
以下是修改为所有文字居中的代码:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:layout_width="wrap_content"
    android:layout_gravity="center"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:text="@string/records"
    android:textColor="#000000"
    android:textSize="30sp"
    android:gravity="center" />

<RelativeLayout
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <Button
        android:background="@drawable/btn_circle_03"
        android:id="@+id/button_records_income"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_gravity="center_horizontal"
        android:layout_toRightOf="@id/button_records_pay"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/income"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />

    <Button
        android:background="@drawable/btn_circle_02"
        android:id="@+id/button_records_pay"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_gravity="center_horizontal"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/pay"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />

</RelativeLayout>

<Button
    android:background="@drawable/btn_circle_01"
    android:id="@+id/button_records_all"
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:layout_gravity="center_horizontal"
    android:layout_margin="20dp"
    style="@style/Widget.AppCompat.Button"
    android:text="@string/all"
    android:textColor="#FFFFFF"
    android:textSize="20sp"
    android:gravity="center" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/all"
        android:textSize="25sp"
        android:textStyle="bold"
        android:gravity="center" />

    <ListView
        android:id="@+id/record_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
    </TextView>
    <TextView
        android:id="@+id/text_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="2019-4-15 21:20:21">
    </TextView>
<TextView
    android:id="@+id/text_source"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:text="来源">
</TextView>
<TextView
    android:id="@+id/text_type"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:text="去向">
</TextView>
<TextView
    android:id="@+id/text_account"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:text="7777777">


</TextView>
请优化以上代码 以下是优化后的代码: xml 复制 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

    <TextView
        android:id="@+id/text_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="43sp"
        android:textColor="#000000"
        android:text="¥10000"
        android:gravity="center" />

    <TextView
        android:id="@+id/text_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="2019-4-15 21:20:21"
        android:gravity="center" />

    <TextView
        android:id="@+id/text_source"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="来源"
        android:gravity="center" />

    <TextView
        android:id="@+id/text_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="去向"
        android:gravity="center" />

    <TextView
        android:id="@+id/text_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="7777777"
        android:gravity="center" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
</TextView>

<Button
    android:background="@drawable/button_gradient_background"
    android:id="@+id/button_income"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:text="@string/income"
    android:textSize="30sp"
    android:textColor="#ffffff"
    android:layout_gravity="center_horizontal"

    >

</Button>

<Button
    android:background="@drawable/button_gradient_background"
    android:id="@+id/button_pay"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_marginTop="30dp"
    android:text="@string/pay"
    android:textSize="30sp"
    android:textColor="#ffffff"
    android:layout_gravity="center_horizontal">

</Button>

请增加滚动效果,并在第二个按钮后面增加速记按钮,与上面风格一致
以下是为您修改后的代码,增加了滚动效果,并在第二个按钮后面添加了速记按钮:
xml
复制

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="222dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:text="@string/new_record"
        android:textSize="77sp"
        android:textColor="#000000"
        android:textStyle="bold"
        android:textAlignment="center">

    </TextView>

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_income"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:text="@string/income"
        android:textSize="30sp"
        android:textColor="#ffffff"
        android:layout_gravity="center_horizontal"

        >

    </Button>

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_pay"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginTop="30dp"
        android:text="@string/pay"
        android:textSize="30sp"
        android:textColor="#ffffff"
        android:layout_gravity="center_horizontal">

    </Button>

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_shortcut"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginTop="30dp"
        android:text="@string/shortcut"
        android:textSize="30sp"
        android:textColor="#ffffff"
        android:layout_gravity="center_horizontal">

    </Button>
</LinearLayout>
package me.zackyu.yubook;

import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.text.SimpleDateFormat;
import java.util.Date;

import me.zackyu.yubook.constant.DBConstant;
import me.zackyu.yubook.db.iDBHelper;
import me.zackyu.yubook.util.NeutralDialogFragment;

public class NewIncomeActivity extends AppCompatActivity {

private Button button_new_income_record;
private Spinner new_income_type;
private EditText new_income_account;
private EditText new_income_amount;
private Spinner new_income_source;

private String type;
private String account;
private Double amount;
private String source;
private Date crttime = new Date();
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


private iDBHelper iDBHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_income_record);
    button_new_income_record = findViewById(R.id.button_new_income_record);
    new_income_source = findViewById(R.id.new_income_source);
    new_income_type = findViewById(R.id.new_income_type);
    new_income_account = findViewById(R.id.new_income_account);
    new_income_amount = findViewById(R.id.new_income_amount);

   new_income_source.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
       @Override
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            type = NewIncomeActivity.this.getResources().getStringArray(R.array.income_from)[position];

       }

       @Override
       public void onNothingSelected(AdapterView<?> parent) {

       }
   });
    new_income_type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            source =  NewIncomeActivity.this.getResources().getStringArray(R.array.income_to)[position];

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    button_new_income_record.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(NewIncomeActivity.this,"显示",Toast.LENGTH_SHORT);
            account = new_income_account.getText().toString();
            String str_amount = new_income_amount.getText().toString();
            if (str_amount==null || "".equals(str_amount)){
                amount=0d;
            }else{
                amount = Double.parseDouble(str_amount);
            }


            iDBHelper = new iDBHelper(NewIncomeActivity.this, DBConstant.NAME,null,1);
            SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
            ContentValues contentValues  = new ContentValues();
            contentValues.put(DBConstant.SOURCE,source);
            contentValues.put(DBConstant.TYPE,type);
            contentValues.put(DBConstant.ACCOUNT,account);
            contentValues.put(DBConstant.AMOUNT,amount);
            contentValues.put(DBConstant.CRTTIME,simpleDateFormat.format(crttime));
            if(account==null || "".equals(account)){
                NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
                neutralDialogFragment.show("提示", "请输入账号!", "确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

// Toast.makeText(NewIncomeActivity.this, "点击了按钮 " , Toast.LENGTH_SHORT).show();
}
}, getFragmentManager());
}else {
if(amount==0||amount<0) {
NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
neutralDialogFragment.show(“提示”, “请检查输入的金额!”, “确定”, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                      //  Toast.makeText(NewIncomeActivity.this, "点击了按钮 " , Toast.LENGTH_SHORT).show();
                    }
                }, getFragmentManager());
            }else{

                    sqLiteDatabase.insert(DBConstant.TNAME, null, contentValues);
                    Intent intent = new Intent(NewIncomeActivity.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                   /* NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
                    neutralDialogFragment.show("结果", "成功了", "确定", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                           // Toast.makeText(NewIncomeActivity.this, "点击了按钮 ", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(NewIncomeActivity.this,MainActivity.class);
                        startActivity(intent);
                        finish();
                        }
                    }, getFragmentManager());*/
                }
            }


        }
    });

}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.text.SimpleDateFormat;
import java.util.Date;

import me.zackyu.yubook.constant.DBConstant;
import me.zackyu.yubook.db.iDBHelper;
import me.zackyu.yubook.util.NeutralDialogFragment;

public class NewIncomeActivity extends AppCompatActivity {

private Button buttonNewIncomeRecord;
private Spinner newIncomeType;
private EditText newIncomeAccount;
private EditText newIncomeAmount;
private Spinner newIncomeSource;

private String type;
private String account;
private Double amount;
private String source;
private Date crtTime = new Date();
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

private iDBHelper iDBHelper;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_income_record);

    initViews();
    setListeners();
}

private void initViews() {
    buttonNewIncomeRecord = findViewById(R.id.button_new_income_record);
    newIncomeSource = findViewById(R.id.new_income_source);
    newIncomeType = findViewById(R.id.new_income_type);
    newIncomeAccount = findViewById(R.id.new_income_account);
    newIncomeAmount = findViewById(R.id.new_income_amount);
}

private void setListeners() {
    newIncomeSource.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            type = getResources().getStringArray(R.array.income_from)[position];
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    newIncomeType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            source = getResources().getStringArray(R.array.income_to)[position];
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    buttonNewIncomeRecord.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            account = newIncomeAccount.getText().toString();
            String strAmount = newIncomeAmount.getText().toString();

            if (TextUtils.isEmpty(strAmount)) {
                amount = 0d;
            } else {
                amount = Double.parseDouble(strAmount);
            }

            iDBHelper = new iDBHelper(NewIncomeActivity.this, DBConstant.NAME, null, 1);
            SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();

            ContentValues contentValues = new ContentValues();
            contentValues.put(DBConstant.SOURCE, source);
            contentValues.put(DBConstant.TYPE, type);
            contentValues.put(DBConstant.ACCOUNT, account);
            contentValues.put(DBConstant.AMOUNT, amount);
            contentValues.put(DBConstant.CRTTIME, simpleDateFormat.format(crtTime));

            if (TextUtils.isEmpty(account)) {
                showDialog("提示", "请输入账号!");
            } else if (amount <= 0) {
                showDialog("提示", "请检查输入的金额!");
            } else {
                sqLiteDatabase.insert(DBConstant.TNAME, null, contentValues);
                Intent intent = new Intent(NewIncomeActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        }
    });
}

private void showDialog(String title, String message) {
    NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
    neutralDialogFragment.show(title, message, "确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // 可以根据需要添加点击确定后的操作
        }
    }, getFragmentManager());
}

}
package me.zackyu.yubook;

import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

import me.zackyu.yubook.constant.DBConstant;
import me.zackyu.yubook.db.iDBHelper;
import me.zackyu.yubook.util.NeutralDialogFragment;

public class NewPayActivity extends AppCompatActivity {

private Button button_new_pay_record;
private Button button_new_pay_back;
private Spinner new_pay_type;


private Spinner new_pay_source;
private EditText new_pay_account;
private EditText new_pay_amount;

private String type;
private String account;
private Double amount;
private String source;
private String crttime;

private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private Date new_pay_crttime=new Date();

private iDBHelper iDBHelper ;


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_pay_record);

    button_new_pay_record = findViewById(R.id.button_new_pay_record);
    button_new_pay_back = findViewById(R.id.button_new_pay_back);
    new_pay_source = findViewById(R.id.new_pay_sources);
    new_pay_type = findViewById(R.id.new_pay_type);
    new_pay_account = findViewById(R.id.new_pay_account);
    new_pay_amount = findViewById(R.id.new_pay_amount);

    //2023年9月18日 11点53分
    new_pay_source.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            type =  NewPayActivity.this.getResources().getStringArray(R.array.pay_from)[position];
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    //2023年9月18日 11点54分
    new_pay_type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            source =  NewPayActivity.this.getResources().getStringArray(R.array.pay_for)[position];
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    button_new_pay_record.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(NewPayActivity.this,"显示",Toast.LENGTH_SHORT);
            account = new_pay_account.getText().toString();
            String str_amount = new_pay_amount.getText().toString();
            if (str_amount.isEmpty()){
                amount=0d;
            }else{
                amount = Double.parseDouble(str_amount);
                String str_big_amount=BigDecimal.ZERO.subtract(new BigDecimal(amount))
                        .setScale(2,BigDecimal.ROUND_HALF_UP).toString();
                amount = Double.parseDouble(str_big_amount);

            }


            crttime = simpleDateFormat.format(new_pay_crttime);
            iDBHelper = new iDBHelper(NewPayActivity.this, DBConstant.NAME,null,1);
            SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
           //准备数据
            ContentValues contentValues  = new ContentValues();
            contentValues.put(DBConstant.SOURCE, source);
            contentValues.put(DBConstant.TYPE,type);
            contentValues.put(DBConstant.ACCOUNT,account);
            contentValues.put(DBConstant.AMOUNT,amount);
            contentValues.put(DBConstant.CRTTIME,crttime);
            if(account==null || "".equals(account)){
                NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
                neutralDialogFragment.show("提示", "请输入账号!", "确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                }, getFragmentManager());
            }else {
                if(amount==0||amount>0) {
                    NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
                    neutralDialogFragment.show("提示", "请检查输入的金额!", "确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    }, getFragmentManager());
                }else{
                    sqLiteDatabase.insert(DBConstant.TNAME, null, contentValues);
                    Intent intent = new Intent(NewPayActivity.this,MainActivity.class);
                    startActivity(intent);
                    finish();

                    /*NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
                    neutralDialogFragment.show("结果", "成功了", "确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Intent intent = new Intent(NewPayActivity.this,MainActivity.class);
                            startActivity(intent);
                            finish();
                        }
                    }, getFragmentManager());*/
                }
            }
            //插入数据
        }
    });
    
    
    
    button_new_pay_back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
    });
}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

import me.zackyu.yubook.constant.DBConstant;
import me.zackyu.yubook.db.iDBHelper;
import me.zackyu.yubook.util.NeutralDialogFragment;

public class NewPayActivity extends AppCompatActivity {

private Button buttonNewPayRecord;
private Button buttonNewPayBack;
private Spinner newPayType;
private Spinner newPaySource;
private EditText newPayAccount;
private EditText newPayAmount;

private String type;
private String account;
private Double amount;
private String source;
private String crtTime;

private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private Date newPayCrtTime = new Date();

private iDBHelper iDBHelper;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_pay_record);

    initViews();
    setListeners();
}

private void initViews() {
    buttonNewPayRecord = findViewById(R.id.button_new_pay_record);
    buttonNewPayBack = findViewById(R.id.button_new_pay_back);
    newPaySource = findViewById(R.id.new_pay_sources);
    newPayType = findViewById(R.id.new_pay_type);
    newPayAccount = findViewById(R.id.new_pay_account);
    newPayAmount = findViewById(R.id.new_pay_amount);
}

private void setListeners() {
    newPaySource.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            type = getResources().getStringArray(R.array.pay_from)[position];
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    newPayType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            source = getResources().getStringArray(R.array.pay_for)[position];
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    buttonNewPayRecord.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            account = newPayAccount.getText().toString();
            String strAmount = newPayAmount.getText().toString();

            if (TextUtils.isEmpty(strAmount)) {
                amount = 0d;
            } else {
                amount = Double.parseDouble(strAmount);
                String strBigAmount = BigDecimal.ZERO.subtract(new BigDecimal(amount))
                       .setScale(2, BigDecimal.ROUND_HALF_UP).toString();
                amount = Double.parseDouble(strBigAmount);
            }

            crtTime = simpleDateFormat.format(newPayCrtTime);

            iDBHelper = new iDBHelper(NewPayActivity.this, DBConstant.NAME, null, 1);
            SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();

            ContentValues contentValues = new ContentValues();
            contentValues.put(DBConstant.SOURCE, source);
            contentValues.put(DBConstant.TYPE, type);
            contentValues.put(DBConstant.ACCOUNT, account);
            contentValues.put(DBConstant.AMOUNT, amount);
            contentValues.put(DBConstant.CRTTIME, crtTime);

            if (TextUtils.isEmpty(account)) {
                showDialog("提示", "请输入账号!");
            } else if (amount >= 0) {
                showDialog("提示", "请检查输入的金额!");
            } else {
                sqLiteDatabase.insert(DBConstant.TNAME, null, contentValues);
                Intent intent = new Intent(NewPayActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        }
    });

    buttonNewPayBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
    });
}

private void showDialog(String title, String message) {
    NeutralDialogFragment neutralDialogFragment = new NeutralDialogFragment();
    neutralDialogFragment.show(title, message, "确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // 可以根据需要添加点击确定后的操作
        }
    }, getFragmentManager());
}

}
package me.zackyu.yubook;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import me.zackyu.yubook.db.iDBHelper;

public class NewRecordActivity extends AppCompatActivity {

private iDBHelper iDBHelper ;
private Button button_income;
private Button button_pay;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_record);
    setTitle("记账");
    iDBHelper = new iDBHelper(this,"MyAccount.db",null,1);


    button_income = findViewById(R.id.button_income);
    button_pay = findViewById(R.id.button_pay);

    button_income.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            iDBHelper.getWritableDatabase();
            Toast.makeText(NewRecordActivity.this,"记账"+iDBHelper.getDatabaseName(),Toast.LENGTH_LONG);
            Intent intent = new Intent();
            intent.setClass(NewRecordActivity.this,NewIncomeActivity.class);
            startActivity(intent);
        }
    });
    button_pay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setClass(NewRecordActivity.this,NewPayActivity.class);
            startActivity(intent);
        }
    });
}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import me.zackyu.yubook.db.iDBHelper;

public class NewRecordActivity extends AppCompatActivity {

private iDBHelper iDBHelper;
private Button buttonIncome;
private Button buttonPay;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_record);
    setTitle("记账");

    initViews();
    initDBHelper();
    setListeners();
}

private void initViews() {
    buttonIncome = findViewById(R.id.button_income);
    buttonPay = findViewById(R.id.button_pay);
}

private void initDBHelper() {
    iDBHelper = new iDBHelper(this, "MyAccount.db", null, 1);
}

private void setListeners() {
    buttonIncome.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (TextUtils.isEmpty(iDBHelper.getDatabaseName())) {
                Toast.makeText(NewRecordActivity.this, "数据库名称为空", Toast.LENGTH_SHORT).show();
                return;
            }
            iDBHelper.getWritableDatabase();
            Toast.makeText(NewRecordActivity.this, "记账: " + iDBHelper.getDatabaseName(), Toast.LENGTH_LONG);
            Intent intent = new Intent(NewRecordActivity.this, NewIncomeActivity.class);
            startActivity(intent);
        }
    });

    buttonPay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(NewRecordActivity.this, NewPayActivity.class);
            startActivity(intent);
        }
    });
}

}
package me.zackyu.yubook;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.text.SimpleDateFormat;
import java.util.List;

import me.zackyu.yubook.db.Record;

public class RecordAdapter extends ArrayAdapter {

private int resourceId;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public RecordAdapter(@NonNull Context context, int resource, List objs) {
    super(context, resource,objs);
    this.resourceId =resource;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    Record record  =getItem(position);
    View view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
    TextView text_amount =view.findViewById(R.id.text_amount);
    TextView text_type =view.findViewById(R.id.text_type);
    TextView text_account = view.findViewById(R.id.text_account);
    TextView text_time = view.findViewById(R.id.text_time);
    TextView text_source = view.findViewById(R.id.text_source);
    text_amount.setText("¥ "+record.getAmount()+"");
    //2023年9月18日 10点46分 添加新功能
    text_source.setText("来源:"+record.getSource());
    text_type.setText("去向:"+record.getType());
    text_account.setText("账号:"+record.getAccount());
    text_time.setText("时间:"+simpleDateFormat.format(record.getCrttime()));

    return view;
}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.text.SimpleDateFormat;
import java.util.List;

import me.zackyu.yubook.db.Record;

public class RecordAdapter extends ArrayAdapter {

private int resourceId;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public RecordAdapter(@NonNull Context context, int resource, @NonNull List<Record> objs) {
    super(context, resource, objs);
    this.resourceId = resource;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    Record record = getItem(position);

    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
    }

    TextView textAmount = convertView.findViewById(R.id.text_amount);
    TextView textType = convertView.findViewById(R.id.text_type);
    TextView textAccount = convertView.findViewById(R.id.text_account);
    TextView textTime = convertView.findViewById(R.id.text_time);
    TextView textSource = convertView.findViewById(R.id.text_source);

    textAmount.setText("¥ " + record.getAmount());
    textSource.setText("来源: " + record.getSource());
    textType.setText("去向: " + record.getType());
    textAccount.setText("账号: " + record.getAccount());
    textTime.setText("时间: " + simpleDateFormat.format(record.getCrttime()));

    return convertView;
}

}
package me.zackyu.yubook;

import static android.content.ContentValues.TAG;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import me.zackyu.yubook.constant.DBConstant;
import me.zackyu.yubook.db.Record;
import me.zackyu.yubook.db.iDBHelper;

public class RecordsActivity extends AppCompatActivity {

private TextView text_title ;
private ListView record_listview;

private RecordAdapter recordAdapter;
private iDBHelper iDBHelper;
private List<Record> records ;
private List<Record> records_income ;
private List<Record> records_pay ;

private Button button_records_all;
private Button button_records_income;
private Button button_records_pay;



SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_records);
    setTitle("记录");
    button_records_all = findViewById(R.id.button_records_all);
    button_records_income = findViewById(R.id.button_records_income);
    button_records_pay = findViewById(R.id.button_records_pay);
    text_title = findViewById(R.id.text_title);
    record_listview = findViewById(R.id.record_list);
    iDBHelper = new iDBHelper(RecordsActivity.this, DBConstant.NAME,null,1);
    getAllRecords();
    recordAdapter = new RecordAdapter(this,R.layout.record_item,records);
    record_listview.setAdapter(recordAdapter);
    button_records_all.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            text_title.setText("所有");
            getAllRecords();
            recordAdapter = new RecordAdapter(RecordsActivity.this,R.layout.record_item,records);
            record_listview.setAdapter(recordAdapter);
        }
    });
    button_records_income.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            text_title.setText("收入");
            getIncomeRecords();
            recordAdapter = new RecordAdapter(RecordsActivity.this,R.layout.record_item,records_income);
            record_listview.setAdapter(recordAdapter);
        }
    });
    button_records_pay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            text_title.setText("支出");
            getPayRecords();
            recordAdapter = new RecordAdapter(RecordsActivity.this,R.layout.record_item,records_pay);
            record_listview.setAdapter(recordAdapter);
        }
    });

}

public void getAllRecords(){
    records = new ArrayList<>();
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    Cursor cursor = sqLiteDatabase.query("MyAccount",null,null,null,null,null,null);
    if(cursor.moveToFirst()){
        do {
            Record record = new Record();
            int id = cursor.getInt(0);


            String source = cursor.getString(1);
            String type = cursor.getString(2);
            String account = cursor.getString(3);
            double amount = cursor.getDouble(4);
            String date = cursor.getString(5);
            Date crttime =new Date();
            try {
                crttime = simpleDateFormat.parse(date);

            } catch (ParseException e) {
                e.printStackTrace();
            }
            record.setSource(source);
            record.setType(type);
            record.setAccount(account);
            record.setAmount(amount);
            record.setId(id);
            record.setCrttime(crttime);
            Log.d(TAG, record.toString());
            records.add(record);
        }while (cursor.moveToNext());
    }

}

public void getIncomeRecords(){
    records_income = new ArrayList<>();
    String sql_income = "select  * from MyAccount where amount >0;";
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    Cursor cursor_income = sqLiteDatabase.rawQuery(sql_income,null);
    if(cursor_income.moveToFirst()){
        do {
            Record record = new Record();
            int id = cursor_income.getInt(0);
            String source = cursor_income.getString(1);
            String type = cursor_income.getString(2);
            String account = cursor_income.getString(3);
            double amount = cursor_income.getDouble(4);
            String date = cursor_income.getString(5);
            Date crttime =new Date();
            try {
                crttime = simpleDateFormat.parse(date);

            } catch (ParseException e) {
                e.printStackTrace();
            }

            record.setType(type);
            record.setAccount(account);
            record.setAmount(amount);
            record.setId(id);
            record.setCrttime(crttime);
            record.setSource(source);
            records_income.add(record);
        }while (cursor_income.moveToNext());
    }

}

public void getPayRecords(){
    records_pay = new ArrayList<>();
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    String sql_pay = "select * from MyAccount where amount < 0;";

    Cursor cursor_pay = sqLiteDatabase.rawQuery(sql_pay,null);
    if(cursor_pay.moveToFirst()){
        do {
            Record record = new Record();
            int id = cursor_pay.getInt(0);
            String source = cursor_pay.getString(1);
            String type = cursor_pay.getString(2);
            String account = cursor_pay.getString(3);
            double amount = cursor_pay.getDouble(4);
            String date = cursor_pay.getString(5);
            Date crttime =new Date();
            try {
                crttime = simpleDateFormat.parse(date);

            } catch (ParseException e) {
                e.printStackTrace();
            }

            record.setType(type);
            record.setAccount(account);
            record.setAmount(amount);
            record.setId(id);
            record.setCrttime(crttime);
            record.setSource(source);
            records_pay.add(record);
        }while (cursor_pay.moveToNext());
    }
}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook;

import static android.content.ContentValues.TAG;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import me.zackyu.yubook.constant.DBConstant;
import me.zackyu.yubook.db.Record;
import me.zackyu.yubook.db.iDBHelper;

public class RecordsActivity extends AppCompatActivity {

private TextView textTitle;
private ListView recordListView;

private RecordAdapter recordAdapter;
private iDBHelper iDBHelper;
private List<Record> records;
private List<Record> recordsIncome;
private List<Record> recordsPay;

private Button buttonRecordsAll;
private Button buttonRecordsIncome;
private Button buttonRecordsPay;

private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_records);
    setTitle("记录");

    initViews();
    initDBHelper();
    initData();
    setListeners();
}

private void initViews() {
    buttonRecordsAll = findViewById(R.id.button_records_all);
    buttonRecordsIncome = findViewById(R.id.button_records_income);
    buttonRecordsPay = findViewById(R.id.button_records_pay);
    textTitle = findViewById(R.id.text_title);
    recordListView = findViewById(R.id.record_list);
}

private void initDBHelper() {
    iDBHelper = new iDBHelper(RecordsActivity.this, DBConstant.NAME, null, 1);
}

private void initData() {
    records = new ArrayList<>();
    getAllRecords();
    recordAdapter = new RecordAdapter(this, R.layout.record_item, records);
    recordListView.setAdapter(recordAdapter);
}

private void setListeners() {
    buttonRecordsAll.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textTitle.setText("所有");
            getAllRecords();
            recordAdapter = new RecordAdapter(RecordsActivity.this, R.layout.record_item, records);
            recordListView.setAdapter(recordAdapter);
        }
    });

    buttonRecordsIncome.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textTitle.setText("收入");
            getIncomeRecords();
            recordAdapter = new RecordAdapter(RecordsActivity.this, R.layout.record_item, recordsIncome);
            recordListView.setAdapter(recordAdapter);
        }
    });

    buttonRecordsPay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textTitle.setText("支出");
            getPayRecords();
            recordAdapter = new RecordAdapter(RecordsActivity.this, R.layout.record_item, recordsPay);
            recordListView.setAdapter(recordAdapter);
        }
    });
}

public void getAllRecords() {
    records.clear();
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    Cursor cursor = sqLiteDatabase.query("MyAccount", null, null, null, null, null, null);
    if (cursor.moveToFirst()) {
        while (!cursor.isAfterLast()) {
            Record record = new Record();
            int id = cursor.getInt(0);
            String source = cursor.getString(1);
            String type = cursor.getString(2);
            String account = cursor.getString(3);
            double amount = cursor.getDouble(4);
            String date = cursor.getString(5);
            try {
                Date crtTime = simpleDateFormat.parse(date);
                record.setSource(source);
                record.setType(type);
                record.setAccount(account);
                record.setAmount(amount);
                record.setId(id);
                record.setCrttime(crtTime);
                records.add(record);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            cursor.moveToNext();
        }
    }
    cursor.close();
}

public void getIncomeRecords() {
    recordsIncome.clear();
    String sqlIncome = "select  * from MyAccount where amount > 0";
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    Cursor cursorIncome = sqLiteDatabase.rawQuery(sqlIncome, null);
    if (cursorIncome.moveToFirst()) {
        while (!cursorIncome.isAfterLast()) {
            Record record = new Record();
            int id = cursorIncome.getInt(0);
            String source = cursorIncome.getString(1);
            String type = cursorIncome.getString(2);
            String account = cursorIncome.getString(3);
            double amount = cursorIncome.getDouble(4);
            String date = cursorIncome.getString(5);
            try {
                Date crtTime = simpleDateFormat.parse(date);
                record.setSource(source);
                record.setType(type);
                record.setAccount(account);
                record.setAmount(amount);
                record.setId(id);
                record.setCrttime(crtTime);
                recordsIncome.add(record);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            cursorIncome.moveToNext();
        }
    }
    cursorIncome.close();
}

public void getPayRecords() {
    recordsPay.clear();
    SQLiteDatabase sqLiteDatabase = iDBHelper.getWritableDatabase();
    String sqlPay = "select * from MyAccount where amount < 0";
    Cursor cursorPay = sqLiteDatabase.rawQuery(sqlPay, null);
    if (cursorPay.moveToFirst()) {
        while (!cursorPay.isAfterLast()) {
            Record record = new Record();
            int id = cursorPay.getInt(0);
            String source = cursorPay.getString(1);
            String type = cursorPay.getString(2);
            String account = cursorPay.getString(3);
            double amount = cursorPay.getDouble(4);
            String date = cursorPay.getString(5);
            try {
                Date crtTime = simpleDateFormat.parse(date);
                record.setSource(source);
                record.setType(type);
                record.setAccount(account);
                record.setAmount(amount);
                record.setId(id);
                record.setCrttime(crtTime);
                recordsPay.add(record);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            cursorPay.moveToNext();
        }
    }
    cursorPay.close();
}

}
package me.zackyu.yubook.util;

import android.app.Dialog;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.DialogInterface;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;

public class NeutralDialogFragment extends DialogFragment {

private DialogInterface.OnClickListener neutralCallback;

private String title;

private String message;

private String hint;


public void show(String title, String message, String hint, DialogInterface.OnClickListener neutralCallback,
                 FragmentManager fragmentManager) {
    this.title = title;
    this.message = message;
    this.hint = hint;
    this.neutralCallback = neutralCallback;
    show(fragmentManager, "NeutralDialogFragment");
}

@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setNeutralButton(hint, neutralCallback);
    return builder.create();
}

}
请优化以上代码
以下是优化后的代码:
java
复制
package me.zackyu.yubook.util;

import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;

public class NeutralDialogFragment extends DialogFragment {

private DialogInterface.OnClickListener neutralCallback;

private String title;

private String message;

private String hint;

public void show(String title, String message, String hint, DialogInterface.OnClickListener neutralCallback,
                 FragmentManager fragmentManager) {
    this.title = title;
    this.message = message;
    this.hint = hint;
    this.neutralCallback = neutralCallback;
    super.show(fragmentManager, "NeutralDialogFragment");
}

@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(title)
          .setMessage(message)
          .setNeutralButton(hint, neutralCallback);
    return builder.create();
}

}

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:layout_width="wrap_content"
    android:layout_gravity="center"
    android:layout_height="100dp"
    android:layout_marginTop="20dp"
    android:text="@string/records"
    android:textColor="#000000"
    android:textSize="77sp"
    android:gravity="center" />

<RelativeLayout
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_records_income"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_gravity="center_horizontal"
        android:layout_toRightOf="@id/button_records_pay"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/income"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_records_pay"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_gravity="center_horizontal"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/pay"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />

</RelativeLayout>

<Button
    android:background="@drawable/button_gradient_background"
    android:id="@+id/button_records_all"
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:layout_gravity="center_horizontal"
    android:layout_margin="20dp"
    style="@style/Widget.AppCompat.Button"
    android:text="@string/all"
    android:textColor="#FFFFFF"
    android:textSize="20sp"
    android:gravity="center" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_title"
        android:layout_width="match_parent"
        android:layout_height="177dp"
        android:text="@string/all"
        android:textSize="77sp"
        android:textStyle="bold"
        android:textAlignment="center"
        android:gravity="center" />

    <ListView
        android:id="@+id/record_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

显示不全,请增加滚动布局
以下是增加滚动布局后的代码:
xml
复制

‘’’

在这里插入代码片


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_height="100dp"
            android:layout_marginTop="20dp"
            android:text="@string/records"
            android:textColor="#000000"
            android:textSize="77sp"
            android:gravity="center" />

        <RelativeLayout
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center">

            <Button
                android:background="@drawable/button_gradient_background"
                android:id="@+id/button_records_income"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:layout_gravity="center_horizontal"
                android:layout_toRightOf="@id/button_records_pay"
                style="@style/Widget.AppCompat.Button"
                android:text="@string/income"
                android:textColor="#FFFFFF"
                android:textSize="20sp"
                android:gravity="center" />

            <Button
                android:background="@drawable/button_gradient_background"
                android:id="@+id/button_records_pay"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:layout_gravity="center_horizontal"
                style="@style/Widget.AppCompat.Button"
                android:text="@string/pay"
                android:textColor="#FFFFFF"
                android:textSize="20sp"
                android:gravity="center" />

        </RelativeLayout>

        <Button
            android:background="@drawable/button_gradient_background"
            android:id="@+id/button_records_all"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:layout_margin="20dp"
            style="@style/Widget.AppCompat.Button"
            android:text="@string/all"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:gravity="center" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:id="@+id/text_title"
                android:layout_width="match_parent"
                android:layout_height="177dp"
                android:text="@string/all"
                android:textSize="77sp"
                android:textStyle="bold"
                android:textAlignment="center"
                android:gravity="center" />

            <ListView
                android:id="@+id/record_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </LinearLayout>
    </LinearLayout>
</ScrollView>

        <Button
            android:background="@drawable/button_gradient_background"
            android:id="@+id/button_records_income"
            android:layout_width="77dp"
            android:layout_height="50dp"

            android:layout_toRightOf="@id/button_records_pay"
            style="@style/Widget.AppCompat.Button"
            android:text="@string/income"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:gravity="center_vertical" />

        <Button
            android:background="@drawable/button_gradient_background"
            android:id="@+id/button_records_pay"
            android:layout_width="77dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            style="@style/Widget.AppCompat.Button"
            android:text="@string/pay"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:gravity="center" />
        <Button
            android:background="@drawable/button_gradient_background"
            android:id="@+id/button_records_all"
            android:layout_width="77dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:layout_margin="20dp"
            style="@style/Widget.AppCompat.Button"
            android:text="@string/all"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:gravity="center" />
    </RelativeLayout>

请把三个按钮的位置排为一行
以下是将三个按钮排在一行的代码:
xml
复制



<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center">

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_records_income"
        android:layout_width="77dp"
        android:layout_height="50dp"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/income"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_records_pay"
        android:layout_width="77dp"
        android:layout_height="50dp"
        android:layout_toRightOf="@id/button_records_income"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/pay"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />

    <Button
        android:background="@drawable/button_gradient_background"
        android:id="@+id/button_records_all"
        android:layout_width="77dp"
        android:layout_height="50dp"
        android:layout_toRightOf="@id/button_records_pay"
        android:layout_margin="20dp"
        style="@style/Widget.AppCompat.Button"
        android:text="@string/all"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:gravity="center" />
</RelativeLayout>


  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值