安卓开发汇总(二)
UI状态修改
描述
输入框初始化隐藏,点击按钮后按钮变色,输入框显示,输入值后点击按钮获取输入框值,然后按钮恢复
点击新建文件夹按钮,出现一个编辑框和保存按钮,点击保存按钮后获取到编辑框中的值,并且隐藏编辑框和保存按钮
思路
主要使用的是android:visibility属性,该属性="gone" 时隐藏,="visible"时显示
<LinearLayout
android:id="@+id/dsf_locality_folder_name_edit_linear_layout"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginStart="40dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:visibility="gone"
android:orientation="horizontal"
>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:gravity="center_vertical"
android:textColor="@color/black"
android:text="文件夹名称:"
/>
<EditText
android:id="@+id/dsf_locality_folder_name_edit"
android:gravity="center_vertical"
android:paddingStart="20dp"
android:layout_width="230dp"
android:layout_height="40dp"
android:hint="请输入文件夹名称"
android:textSize="12sp"
tools:ignore="RtlSymmetry"
android:backgroundTint="@color/black"
/>
</LinearLayout>
在Java中使用
EditText dsfLocalityFolderNameEdit = dialogView.findViewById(R.id.dsf_locality_folder_name_edit);
LinearLayout dsfLocalityFolderNameEditLinearLayout = dialogView.findViewById(R.id.dsf_locality_folder_name_edit_linear_layout);
Button dsfLocalityFolderNew = dialogView.findViewById(R.id.dsf_locality_folder_new);
dsfLocalityFolderNew.setOnClickListener(v->{
String dsfLocalityFolderNewText = (String) dsfLocalityFolderNew.getText();
if(Objects.equals(dsfLocalityFolderNewText, "新建")){
dsfLocalityFolderNew.setBackgroundResource(R.color.btn_color1);
dsfLocalityFolderNew.setText("保存");
dsfLocalityFolderNameEditLinearLayout.setVisibility(View.VISIBLE);
} else {
dsfLocalityFolderNew.setBackgroundResource(R.color.btn_color);
dsfLocalityFolderNew.setText("新建");
String inputTextData = String.valueOf(dsfLocalityFolderNameEdit.getText());
boolean ismkdirsFolder = new File(selectFolderListPath,inputTextData).mkdirs();
if(ismkdirsFolder){
selectFolderListData = handleUpdateSelectFolderData(new File(selectFolderListPath));
SelectFolderAdapter temp_selectFolderAdapter = new SelectFolderAdapter(selectFolderListData, FtpManageAction.this);
dsfLocalityFolderContent.setAdapter(temp_selectFolderAdapter);
dsfLocalityFolderPath.setText(selectFolderListPath);
dsfLocalityFolderNameEditLinearLayout.setVisibility(View.GONE);
MessageDialog.showMsg(FtpManageAction.this,"文件夹【"+inputTextData+"】创建成功");
} else {
MessageDialog.showMsg(FtpManageAction.this,"文件夹【"+inputTextData+"】创建失败");
}
}
});
返回上一层
假设selectFolderListPath存储的是当前文件管理的文件夹路径,字符串类型,例如"文件夹1/文件夹2/文件夹3",假如我要返回上一层,逻辑代码
public static String goBackOneLevel(String selectFolderListPath) {
// 将文件夹路径按照"/"分割成数组
String[] folderArray = selectFolderListPath.split("/");
// 如果文件夹路径只有一个元素,表示已经在最顶层文件夹,无法返回上一层
if (folderArray.length <= 1) {
return "已经在最顶层文件夹,无法返回上一层";
}
// 创建一个新的数组,不包含最后一个元素(当前文件夹)
String[] newFolderArray = Arrays.copyOf(folderArray, folderArray.length - 1);
// 重新拼接文件夹路径
String newPath = String.join("/", newFolderArray);
return newPath;
}
public static void main(String[] args) {
String selectFolderListPath = "文件夹1/文件夹2/文件夹3";
String newFolderPath = goBackOneLevel(selectFolderListPath);
System.out.println(newFolderPath);
}