Skip to content

Commit cf5d1eb

Browse files
committed
feat(dialog): 添加全屏编辑对话框功能 #1336
- 新增 FullEditDialog 类实现全屏编辑对话框 - 创建 dialog_full_edit.xml 布局文件定义对话框界面 - 在版本设置页面中为 JVM 参数和游戏参数输入框添加长按编辑功能 - 实现文本内容的复制粘贴和编辑保存功能 - 集成到现有参数设置流程中,提升用户体验
1 parent 3756f03 commit cf5d1eb

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed

FCL/src/main/java/com/tungsten/fcl/ui/manage/VersionSettingPage.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import com.tungsten.fcllibrary.browser.options.LibMode;
5050
import com.tungsten.fcllibrary.browser.options.SelectionMode;
5151
import com.tungsten.fcllibrary.component.dialog.FCLAlertDialog;
52+
import com.tungsten.fcllibrary.component.dialog.FullEditDialog;
5253
import com.tungsten.fcllibrary.component.ui.FCLCommonPage;
5354
import com.tungsten.fcllibrary.component.view.FCLCheckBox;
5455
import com.tungsten.fcllibrary.component.view.FCLEditText;
@@ -251,6 +252,16 @@ private void create() {
251252
builder.create().show();
252253
}
253254
});
255+
View.OnLongClickListener listener = view -> {
256+
FullEditDialog dialog = new FullEditDialog(getContext(), str -> {
257+
((FCLEditText) view).setText(str);
258+
});
259+
dialog.getEditText().setText(((FCLEditText) view).getText());
260+
dialog.show();
261+
return true;
262+
};
263+
txtJVMArgs.setOnLongClickListener(listener);
264+
txtGameArgs.setOnLongClickListener(listener);
254265
}
255266

256267
@Override
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.tungsten.fcllibrary.component.dialog
2+
3+
import android.annotation.SuppressLint
4+
import android.content.Context
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import com.tungsten.fcllibrary.component.view.FCLEditText
8+
import com.tungsten.fcllibrary.databinding.DialogFullEditBinding
9+
import com.tungsten.fcllibrary.util.ConvertUtils
10+
import java.util.function.Consumer
11+
12+
class FullEditDialog(context: Context, private val callback: Consumer<String?>) : FCLDialog(context),
13+
View.OnClickListener {
14+
var binding: DialogFullEditBinding
15+
16+
init {
17+
setCancelable(false)
18+
window?.setLayout(ConvertUtils.dip2px(context, 400f), ViewGroup.LayoutParams.MATCH_PARENT)
19+
binding = DialogFullEditBinding.inflate(layoutInflater)
20+
setContentView(binding.root)
21+
binding.apply {
22+
positive.setOnClickListener(this@FullEditDialog)
23+
negative.setOnClickListener(this@FullEditDialog)
24+
}
25+
}
26+
27+
override fun onClick(v: View?) {
28+
binding.apply {
29+
if (v === positive) {
30+
val s = editText.getText().toString()
31+
if (!s.trim { it <= ' ' }.isEmpty()) {
32+
callback.accept(s)
33+
dismiss()
34+
}
35+
}
36+
if (v === negative) {
37+
dismiss()
38+
}
39+
}
40+
}
41+
42+
override fun setTitle(titleId: Int) {
43+
binding.title.setText(titleId)
44+
}
45+
46+
override fun setTitle(title: CharSequence?) {
47+
binding.title.text = title
48+
}
49+
50+
@SuppressLint("SetTextI18n")
51+
fun appendTitle(title: String) {
52+
binding.title.text = "${binding.title.text} $title"
53+
}
54+
55+
fun getEditText(): FCLEditText {
56+
return binding.editText
57+
}
58+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="400dp"
5+
android:layout_height="match_parent"
6+
android:padding="10dp">
7+
8+
<com.tungsten.fcllibrary.component.view.FCLTextView
9+
android:id="@+id/title"
10+
android:layout_width="wrap_content"
11+
android:layout_height="wrap_content"
12+
android:singleLine="true"
13+
android:text="@string/edit"
14+
android:textSize="16sp"
15+
app:layout_constraintEnd_toEndOf="parent"
16+
app:layout_constraintHorizontal_bias="0.5"
17+
app:layout_constraintStart_toStartOf="parent"
18+
app:layout_constraintTop_toTopOf="parent" />
19+
20+
<com.tungsten.fcllibrary.component.view.FCLEditText
21+
android:id="@+id/edit_text"
22+
android:layout_width="match_parent"
23+
android:layout_height="0dp"
24+
android:gravity="top|start"
25+
android:imeOptions="flagNoExtractUi"
26+
android:paddingTop="10dp"
27+
android:paddingBottom="10dp"
28+
android:textSize="14sp"
29+
app:layout_constraintBottom_toTopOf="@+id/positive"
30+
app:layout_constraintTop_toBottomOf="@+id/title" />
31+
32+
<com.tungsten.fcllibrary.component.view.FCLButton
33+
android:id="@+id/positive"
34+
android:layout_width="wrap_content"
35+
android:layout_height="wrap_content"
36+
android:text="@string/dialog_positive"
37+
app:layout_constraintBottom_toBottomOf="parent"
38+
app:layout_constraintStart_toStartOf="parent" />
39+
40+
<com.tungsten.fcllibrary.component.view.FCLButton
41+
android:id="@+id/negative"
42+
android:layout_width="wrap_content"
43+
android:layout_height="wrap_content"
44+
android:text="@string/dialog_negative"
45+
app:layout_constraintBottom_toBottomOf="parent"
46+
app:layout_constraintEnd_toEndOf="parent" />
47+
48+
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)