Переглянути джерело

PDFTools(Android) - 1.优化Page Edit暗黑模式

liuxiaolong 1 рік тому
батько
коміт
8f7c853cbf
20 змінених файлів з 453 додано та 317 видалено
  1. 3 0
      annotation-ctrl-demo/src/main/java/com/compdfkit/demo/annotation/PDFAnnotationSampleActivity.java
  2. BIN
      compdfkit-repo/compdfkit-ui/ComPDFKit-UI.aar
  3. BIN
      compdfkit-repo/compdfkit/ComPDFKit.aar
  4. 9 8
      compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstyle/CAnnotImplStyle.java
  5. 8 8
      compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstyle/CPDFGlobalAnnotStyle.java
  6. 1 2
      compdfkit-tools/src/main/java/com/compdfkit/tools/common/contextmenu/impl/ComboBoxContextMenuView.java
  7. 23 0
      compdfkit-tools/src/main/java/com/compdfkit/tools/common/utils/annotation/CPDFAnnotationManager.java
  8. 19 20
      compdfkit-tools/src/main/java/com/compdfkit/tools/common/views/pdfpageedit/CInsertBlankPageDialogFragment.java
  9. 2 2
      compdfkit-tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/CPDFEditThumbnailFragment.java
  10. 24 8
      compdfkit-tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/adpater/CPDFEditThumbnailListAdapter.java
  11. 5 0
      compdfkit-tools/src/main/res/color/tools_radio_btn_text_status_color.xml
  12. 27 4
      compdfkit-tools/src/main/res/drawable/tools_style_editpage_bar_done_bg.xml
  13. 10 6
      compdfkit-tools/src/main/res/layout/tools_page_edit_bar.xml
  14. 4 1
      compdfkit-tools/src/main/res/layout/tools_page_edit_dialog_fragment.xml
  15. 31 18
      compdfkit-tools/src/main/res/layout/tools_pageedit_insert_blank_page_dialog_fragment.xml
  16. 76 57
      compdfkit-tools/src/main/res/layout/tools_pageedit_insert_pdf_page_dialog_fragment.xml
  17. 4 2
      compdfkit-tools/src/main/res/layout/tools_pageedit_pagesize_item.xml
  18. 204 180
      compdfkit-tools/src/main/res/layout/tools_pageedit_tool_bar.xml
  19. 1 1
      form-ctrl-demo/src/main/java/com/compdfkit/demo/form/PDFFormSampleActivity.java
  20. 2 0
      pageedit-ctrl-demo/src/main/java/com/compdfkit/demo/pageedit/MainActivity.java

+ 3 - 0
annotation-ctrl-demo/src/main/java/com/compdfkit/demo/annotation/PDFAnnotationSampleActivity.java

@@ -2,6 +2,7 @@ package com.compdfkit.demo.annotation;
 
 import android.Manifest;
 import android.content.Intent;
+import android.graphics.Paint;
 import android.net.Uri;
 import android.os.Bundle;
 import android.view.View;
@@ -9,6 +10,7 @@ import android.view.View;
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.demo.annotation.databinding.AnnotationPdfSampleActivityBinding;
@@ -65,6 +67,7 @@ public class PDFAnnotationSampleActivity extends CBasicActivity {
     }
 
     private void initPDFView() {
+
         binding.pdfView.setAllowAddAndEditAnnot(true);
         CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) ->
                 binding.pdfView.openPDF(filePath));

BIN
compdfkit-repo/compdfkit-ui/ComPDFKit-UI.aar


BIN
compdfkit-repo/compdfkit/ComPDFKit.aar


+ 9 - 8
compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstyle/CAnnotImplStyle.java

@@ -76,8 +76,8 @@ public class CAnnotImplStyle implements CStyleProvider {
                 CPDFSquareAnnotation squareAnnotation = squareAnnot.onGetAnnotation();
                 squareAnnotation.setLineColor(style.getLineColor());
                 squareAnnotation.setLineAlpha(style.getLineColorOpacity());
-                squareAnnotation.setBgColor(style.getFillColor());
-                squareAnnotation.setBgAlpha(style.getFillColorOpacity());
+                squareAnnotation.setFillColor(style.getFillColor());
+                squareAnnotation.setFillAlpha(style.getFillColorOpacity());
                 squareAnnotation.setBorderStyle(style.getBorderStyle());
                 squareAnnotation.setBorderWidth(style.getBorderWidth());
                 squareAnnotation.updateAp();
@@ -88,8 +88,8 @@ public class CAnnotImplStyle implements CStyleProvider {
                 CPDFCircleAnnotation circleAnnotation = circleAnnot.onGetAnnotation();
                 circleAnnotation.setLineColor(style.getLineColor());
                 circleAnnotation.setLineAlpha(style.getLineColorOpacity());
-                circleAnnotation.setBgColor(style.getFillColor());
-                circleAnnotation.setBgAlpha(style.getFillColorOpacity());
+                circleAnnotation.setFillColor(style.getFillColor());
+                circleAnnotation.setFillAlpha(style.getFillColorOpacity());
                 circleAnnotation.setBorderStyle(style.getBorderStyle());
                 circleAnnotation.setBorderWidth(style.getBorderWidth());
                 circleAnnotation.updateAp();
@@ -160,8 +160,8 @@ public class CAnnotImplStyle implements CStyleProvider {
                 CPDFSquareAnnotation squareAnnotation = squareAnnot.onGetAnnotation();
                 style.setLineColor(squareAnnotation.getLineColor());
                 style.setLineColorOpacity(squareAnnotation.getLineAlpha());
-                style.setFillColor(squareAnnotation.getBgColor());
-                style.setFillColorOpacity(squareAnnotation.getBgAlpha());
+                style.setFillColor(squareAnnotation.getFillColor());
+                style.setFillColorOpacity(squareAnnotation.getFillAlpha());
                 style.setBorderWidth(squareAnnotation.getBorderWidth());
                 CPDFBorderStyle borderStyle = squareAnnotation.getBorderStyle();
                 if (borderStyle.getDashArr() == null || borderStyle.getDashArr().length < 2) {
@@ -174,8 +174,8 @@ public class CAnnotImplStyle implements CStyleProvider {
                 CPDFCircleAnnotation circleAnnotation = circleAnnot.onGetAnnotation();
                 style.setLineColor(circleAnnotation.getLineColor());
                 style.setLineColorOpacity(circleAnnotation.getLineAlpha());
-                style.setFillColor(circleAnnotation.getBgColor());
-                style.setFillColorOpacity(circleAnnotation.getBgAlpha());
+                style.setFillColor(circleAnnotation.getFillColor());
+                style.setFillColorOpacity(circleAnnotation.getFillAlpha());
                 style.setBorderWidth(circleAnnotation.getBorderWidth());
                 CPDFBorderStyle circleBorderStyle = circleAnnotation.getBorderStyle();
                 if (circleBorderStyle.getDashArr() == null || circleBorderStyle.getDashArr().length < 2) {
@@ -214,6 +214,7 @@ public class CAnnotImplStyle implements CStyleProvider {
                 style.setFontBold(CPDFTextAttribute.FontNameHelper.isBold(textAttribute.getFontName()));
                 style.setFontItalic(CPDFTextAttribute.FontNameHelper.isItalic(textAttribute.getFontName()));
                 style.setFontSize((int) textAttribute.getFontSize());
+
                 switch (freetextAnnotation.getFreetextAlignment()){
                     case ALIGNMENT_LEFT:
                         style.setAlignment(CAnnotStyle.Alignment.LEFT);

+ 8 - 8
compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstyle/CPDFGlobalAnnotStyle.java

@@ -132,8 +132,8 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                     break;
                 case ANNOT_SQUARE:
                     CPDFSquareAttr squareAttr = attribute.getSquareAttr();
-                    squareAttr.setBgColor(params.getFillColor());
-                    squareAttr.setBgAlpha(params.getFillColorOpacity());
+                    squareAttr.setFillColor(params.getFillColor());
+                    squareAttr.setFillAlpha(params.getFillColorOpacity());
                     squareAttr.setLineColor(params.getLineColor());
                     squareAttr.setLineAlpha(params.getLineColorOpacity());
                     squareAttr.setBorderWidth(params.getBorderWidth());
@@ -141,8 +141,8 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                     break;
                 case ANNOT_CIRCLE:
                     CPDFCircleAttr circleAttr = attribute.getCircleAttr();
-                    circleAttr.setBgColor(params.getFillColor());
-                    circleAttr.setBgAlpha(params.getFillColorOpacity());
+                    circleAttr.setFillColor(params.getFillColor());
+                    circleAttr.setFillAlpha(params.getFillColorOpacity());
                     circleAttr.setLineColor(params.getLineColor());
                     circleAttr.setLineAlpha(params.getLineColorOpacity());
                     circleAttr.setBorderWidth(params.getBorderWidth());
@@ -314,8 +314,8 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                 break;
             case ANNOT_SQUARE:
                 CPDFSquareAttr squareAttr = attribute.getSquareAttr();
-                style.setFillColor(squareAttr.getBgColor());
-                style.setFillColorOpacity(squareAttr.getBgAlpha());
+                style.setFillColor(squareAttr.getFillColor());
+                style.setFillColorOpacity(squareAttr.getFillAlpha());
                 style.setLineColor(squareAttr.getLineColor());
                 style.setLineColorOpacity(squareAttr.getLineAlpha());
                 style.setBorderWidth(squareAttr.getBorderWidth());
@@ -323,8 +323,8 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                 break;
             case ANNOT_CIRCLE:
                 CPDFCircleAttr circleAttr = attribute.getCircleAttr();
-                style.setFillColor(circleAttr.getBgColor());
-                style.setFillColorOpacity(circleAttr.getBgAlpha());
+                style.setFillColor(circleAttr.getFillColor());
+                style.setFillColorOpacity(circleAttr.getFillAlpha());
                 style.setLineColor(circleAttr.getLineColor());
                 style.setLineColorOpacity(circleAttr.getLineAlpha());
                 style.setBorderWidth(circleAttr.getBorderWidth());

+ 1 - 2
compdfkit-tools/src/main/java/com/compdfkit/tools/common/contextmenu/impl/ComboBoxContextMenuView.java

@@ -33,11 +33,10 @@ public class ComboBoxContextMenuView implements ContextMenuComboBoxProvider {
     public View createComboBoxContentView(CPDFContextMenuHelper helper, CPDFPageView pageView, CPDFComboboxWidgetImpl comboBoxWidgetImpl) {
         ContextMenuView menuView = new ContextMenuView(pageView.getContext());
         menuView.addItem(R.string.tools_options, v -> {
-            CPDFWidgetItems widgetItems = (CPDFWidgetItems) comboBoxWidgetImpl.onGetAnnotation();
             CPDFAnnotationManager annotationManager = new CPDFAnnotationManager();
             if (helper.getReaderView().getContext() instanceof FragmentActivity) {
                 FragmentActivity fragmentActivity = (FragmentActivity) helper.getReaderView().getContext();
-                annotationManager.showFormListEditFragment(
+                annotationManager.showFormComboBoxEditFragment(
                         fragmentActivity.getSupportFragmentManager(),
                         comboBoxWidgetImpl,
                         pageView,

+ 23 - 0
compdfkit-tools/src/main/java/com/compdfkit/tools/common/utils/annotation/CPDFAnnotationManager.java

@@ -227,6 +227,29 @@ public class CPDFAnnotationManager {
         editFragment.show(fragmentManager, "editFragment");
     }
 
+    public void showFormComboBoxEditFragment(FragmentManager fragmentManager, CPDFBaseAnnotImpl<CPDFAnnotation> cpdfBaseAnnot, CPDFPageView pageView, boolean needDefaultSelect){
+        CPDFWidgetItems widgetItems = (CPDFWidgetItems) cpdfBaseAnnot.onGetAnnotation();
+        CFormOptionEditFragment editFragment = CFormOptionEditFragment.newInstance(
+                R.string.tools_edit_combo_box,
+                R.string.tools_add_items,
+                R.string.tools_edit);
+        editFragment.setPdfWidgetItems(widgetItems);
+        editFragment.setNeedDefaultSelect(needDefaultSelect);
+        editFragment.setEditListListener((widgetItems1, selectedIndexs1) -> {
+            if (widgetItems1.length == 0){
+                widgetItems.setOptionItems(null);
+            }else {
+                widgetItems.setOptionItems(widgetItems1, selectedIndexs1);
+            }
+            widgetItems.updateAp();
+            cpdfBaseAnnot.onAnnotAttrChange();
+            pageView.invalidate();
+
+        });
+        editFragment.show(fragmentManager, "editFragment");
+    }
+
+
     public void showPushButtonActionDialog(FragmentManager fragmentManager, CPDFReaderView readerView, CPDFBaseAnnotImpl<CPDFAnnotation> cpdfBaseAnnot, CPDFPageView pageView){
         CPDFPushbuttonWidget pushbuttonWidget = (CPDFPushbuttonWidget) cpdfBaseAnnot.onGetAnnotation();
         CPDFAction action = pushbuttonWidget.getButtonAction();

+ 19 - 20
compdfkit-tools/src/main/java/com/compdfkit/tools/common/views/pdfpageedit/CInsertBlankPageDialogFragment.java

@@ -20,6 +20,7 @@ import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.utils.dialog.CDialogFragmentUtil;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
+import com.compdfkit.tools.common.utils.viewutils.CDimensUtils;
 import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
 import com.compdfkit.tools.common.views.CPageEditBar;
 import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
@@ -89,30 +90,25 @@ public class CInsertBlankPageDialogFragment extends BottomSheetDialogFragment im
         rbLastPage.setOnClickListener(this);
         rbToPageLocationBefore.setOnClickListener(this);
         rbToPageLocationAfter.setOnClickListener(this);
-        etInputPageIndex.setOnFocusChangeListener(new View.OnFocusChangeListener() {
-            @Override
-            public void onFocusChange(View view, boolean b) {
-                if (b) {
-                    if (rbHomePage.isChecked() || rbLastPage.isChecked()) {
-                        rbToPageLocationBefore.setChecked(true);
-                        CViewUtils.showKeyboard(etInputPageIndex);
-                    }
-                } else {
-                    CViewUtils.hideKeyboard(etInputPageIndex);
+        etInputPageIndex.setOnFocusChangeListener((view, b) -> {
+            if (b) {
+                if (rbHomePage.isChecked() || rbLastPage.isChecked()) {
+                    rbToPageLocationBefore.setChecked(true);
+                    CViewUtils.showKeyboard(etInputPageIndex);
                 }
+            } else {
+                CViewUtils.hideKeyboard(etInputPageIndex);
             }
         });
 
         toolBar.setBackBtnClickListener(v -> dismiss());
-        toolBar.setOnDoneClickCallback(() -> {
-            CThreadPoolUtils.getInstance().execute(() -> {
-                insertBlankPage();
-                dismiss();
-                if (onEditDoneCallback != null) {
-                    onEditDoneCallback.onEditDone();
-                }
-            });
-        });
+        toolBar.setOnDoneClickCallback(() -> CThreadPoolUtils.getInstance().execute(() -> {
+            insertBlankPage();
+            dismiss();
+            if (onEditDoneCallback != null) {
+                onEditDoneCallback.onEditDone();
+            }
+        }));
         toolBar.setTitle(R.string.tools_page_edit_insert_page_blank);
         toolBar.showEditButton(false);
         toolBar.showSelectButton(false);
@@ -188,7 +184,10 @@ public class CInsertBlankPageDialogFragment extends BottomSheetDialogFragment im
         }
         for (int i = 0; i < sizeArr.length; i++) {
             RadioButton radio = (RadioButton)LayoutInflater.from(getContext()).inflate(R.layout.tools_pageedit_pagesize_item, null);
-            radio.setId(100+i);
+            RadioGroup.LayoutParams layoutParams =
+                    new RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, CDimensUtils.dp2px(getContext(), 50));
+            radio.setLayoutParams(layoutParams);
+            radio.setId(View.generateViewId());
             if (i == 1) {
                 radio.setChecked(true);
                 tvCurPagesize.setText(sizeArr[i]);

+ 2 - 2
compdfkit-tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/CPDFEditThumbnailFragment.java

@@ -83,9 +83,9 @@ public class CPDFEditThumbnailFragment extends Fragment {
     public void setSelectAll(boolean select) {
         if (isEdit == true && thumbnailListAdapter != null) {
             if (select) {
-                thumbnailListAdapter.setAllClick();
+                thumbnailListAdapter.setAllClick(rvThumbnailRecyclerView);
             } else {
-                thumbnailListAdapter.setAllUnClick();
+                thumbnailListAdapter.setAllUnClick(rvThumbnailRecyclerView);
             }
         }
     }

+ 24 - 8
compdfkit-tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/adpater/CPDFEditThumbnailListAdapter.java

@@ -26,6 +26,7 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
 import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.core.page.CPDFPage;
 import com.compdfkit.tools.R;
@@ -84,6 +85,7 @@ public class CPDFEditThumbnailListAdapter extends RecyclerView.Adapter<CPDFEditT
         Glide.with(holder.itemView.getContext())
                 .load(CPDFWrapper.fromDocument(cPdfDocument, position))
                 .diskCacheStrategy(DiskCacheStrategy.NONE)
+                .transition(DrawableTransitionOptions.withCrossFade())
                 .into(ivThumbnail);
         holder.tvPageIndex.setText(String.valueOf(holder.getAdapterPosition() + 1));
         holder.cardView.setOnClickListener(v -> {
@@ -91,6 +93,10 @@ public class CPDFEditThumbnailListAdapter extends RecyclerView.Adapter<CPDFEditT
                 displayPageIndexListener.displayPage(holder.getAdapterPosition());
             }
         });
+        updateSelectStatus(holder);
+    }
+
+    private void updateSelectStatus(CPDFThumbnailItemViewHolder holder){
         if (isEdit) {
             if (selectArr.get(holder.getAdapterPosition()) == 1) {
                 holder.cbSelect.setChecked(true);
@@ -144,20 +150,33 @@ public class CPDFEditThumbnailListAdapter extends RecyclerView.Adapter<CPDFEditT
         notifyItemChanged(position);
     }
 
-    public void setAllClick() {
+    public void setAllClick(RecyclerView recyclerView){
         if (isEdit) {
             for (int i = 0; i < totalPages; i++) {
                 selectArr.put(i, 1);
+                RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(i);
+                if (viewHolder != null) {
+                    updateSelectStatus((CPDFThumbnailItemViewHolder) viewHolder);
+                }else {
+                    notifyItemChanged(i);
+                }
             }
         }
-        notifyDataSetChanged();
     }
 
-    public void setAllUnClick() {
+    public void setAllUnClick(RecyclerView recyclerView) {
         if (isEdit) {
-            selectArr.clear();
+            for (int size = selectArr.size() -1; size >= 0; size--) {
+                int key = selectArr.keyAt(size);
+                selectArr.removeAt(size);
+                RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(key);
+                if (viewHolder != null) {
+                    updateSelectStatus((CPDFThumbnailItemViewHolder) viewHolder);
+                } else {
+                    notifyItemChanged(key);
+                }
+            }
         }
-        notifyDataSetChanged();
     }
 
     public SparseIntArray getSelectArr() {
@@ -298,9 +317,6 @@ public class CPDFEditThumbnailListAdapter extends RecyclerView.Adapter<CPDFEditT
             protected void onPostExecute(Boolean aBoolean) {
                 super.onPostExecute(aBoolean);
                 if (aBoolean) {
-//                    if (onPageEditListener != null) {
-//                        onPageEditListener.onEdit();
-//                    }
                     notifyDataSetChanged();
                 } else {
 

+ 5 - 0
compdfkit-tools/src/main/res/color/tools_radio_btn_text_status_color.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/tools_text_color_primary" android:state_checked="true"/>
+    <item android:color="@color/tools_text_color_hint"/>
+</selector>

+ 27 - 4
compdfkit-tools/src/main/res/drawable/tools_style_editpage_bar_done_bg.xml

@@ -1,5 +1,28 @@
 <?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@color/tools_on_secondary"/>
-    <stroke android:width="1dp" android:color="@color/tools_editpage_bar_done_bg_strike_color"/>
-</shape>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/tools_ripple_color">
+    <item android:id="@android:id/mask" >
+        <shape>
+            <corners android:radius="1dp"
+                />
+            <solid android:color="@color/tools_color_primary"/>
+        </shape>
+    </item>
+
+    <item>
+        <selector >
+            <item android:state_enabled="false">
+                <shape>
+                    <solid android:color="@color/tools_color_primary"/>
+                </shape>
+            </item>
+            <item>
+                <shape>
+                    <corners android:radius="1dp"
+                        />
+                    <stroke android:color="@color/tools_color_accent" android:width="1dp"/>
+                </shape>
+            </item>
+        </selector>
+
+    </item>
+</ripple>

+ 10 - 6
compdfkit-tools/src/main/res/layout/tools_page_edit_bar.xml

@@ -43,7 +43,7 @@
         android:layout_width="69dp"
         android:layout_height="32dp"
         android:gravity="center"
-        android:textColor="#1460f3"
+        android:textColor="@color/tools_normal_btn_text_color"
         android:visibility="gone"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -51,14 +51,16 @@
         android:background="@drawable/tools_style_editpage_bar_done_bg"
         android:foreground="@drawable/tools_common_rect_ripple"
         android:layout_marginRight="16dp"
+        tools:visibility="visible"
         android:text="@string/tools_page_edit_toolbar_done"/>
 
     <androidx.appcompat.widget.AppCompatImageView
         android:id="@+id/iv_tool_bar_select"
-        android:layout_width="23dp"
-        android:layout_height="23dp"
+        android:layout_width="30dp"
+        android:layout_height="30dp"
         android:layout_marginEnd="25dp"
         android:visibility="gone"
+        android:padding="4dp"
         android:background="@drawable/tools_common_oval_ripple"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintDimensionRatio="1:1"
@@ -69,9 +71,11 @@
 
     <androidx.appcompat.widget.AppCompatImageView
         android:id="@+id/iv_tool_bar_edit"
-        android:layout_width="19dp"
-        android:layout_height="19dp"
-        android:layout_marginEnd="19dp"
+        android:layout_width="30dp"
+        android:layout_height="30dp"
+        android:layout_marginEnd="16dp"
+        android:padding="4dp"
+        tools:visibility="gone"
         android:background="@drawable/tools_common_oval_ripple"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintDimensionRatio="1:1"

+ 4 - 1
compdfkit-tools/src/main/res/layout/tools_page_edit_dialog_fragment.xml

@@ -2,7 +2,8 @@
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <com.compdfkit.tools.common.views.CPageEditBar
         android:id="@+id/tool_bar"
@@ -20,6 +21,7 @@
         android:name="com.compdfkit.tools.viewer.pdfthumbnail.CPDFEditThumbnailFragment"
         android:layout_width="match_parent"
         android:layout_height="0dp"
+        tools:layout="@layout/tools_bota_thumbnail_list_fragment"
         app:layout_constraintBottom_toTopOf="@+id/tool_page_edit_bar"
         app:layout_constraintTop_toBottomOf="@id/tool_bar"/>
 
@@ -28,6 +30,7 @@
         android:layout_width="match_parent"
         android:layout_height="56dp"
         android:visibility="gone"
+        tools:visibility="visible"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"/>

+ 31 - 18
compdfkit-tools/src/main/res/layout/tools_pageedit_insert_blank_page_dialog_fragment.xml

@@ -30,8 +30,8 @@
             <View style="@style/tools_document_info_dividing_line_style" />
 
             <androidx.constraintlayout.widget.ConstraintLayout
-                android:layout_marginLeft="15dp"
-                android:layout_marginRight="15dp"
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp"
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/tools_pageedit_line_height">
                 <TextView
@@ -40,6 +40,7 @@
                     app:layout_constraintTop_toTopOf="parent"
                     app:layout_constraintBottom_toBottomOf="parent"
                     android:text="@string/tools_page_edit_insert_page_pagesize"
+                    android:textColor="@color/tools_text_color_primary"
                     />
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/iv_tool_insert_page_right"
@@ -60,6 +61,7 @@
                     app:layout_constraintTop_toTopOf="parent"
                     app:layout_constraintBottom_toBottomOf="parent"
                     android:text="A4(595*842)"
+                    android:textColor="@color/tools_text_color_primary"
                     />
             </androidx.constraintlayout.widget.ConstraintLayout>
 
@@ -70,7 +72,8 @@
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:id="@+id/cl_pagesize"
                 android:visibility="gone"
-                android:layout_marginLeft="15dp"
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
                 <RadioGroup
@@ -92,14 +95,15 @@
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/tools_pageedit_line_height"
-                android:layout_marginRight="15dp"
-                android:layout_marginLeft="15dp">
+                android:layout_marginEnd="16dp"
+                android:layout_marginStart="16dp">
                 <TextView
                     style="@style/tools_edit_page_insertpage_pagesize_style"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
                     app:layout_constraintBottom_toBottomOf="parent"
                     android:text="@string/tools_page_edit_insert_page_pagedirection"
+                    android:textColor="@color/tools_text_color_primary"
                     />
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/iv_tool_insert_page_horizontal"
@@ -114,13 +118,13 @@
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
                     app:srcCompat="@drawable/tools_ic_pageedit_direction_horizontal"
-                    app:tint="@color/tools_on_primary" />
+                    app:tint="@color/tools_icon_status_color" />
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/iv_tool_insert_page_verticel"
                     android:layout_width="40dp"
                     android:layout_height="32dp"
-                    android:paddingLeft="11dp"
-                    android:paddingRight="11dp"
+                    android:paddingStart="11dp"
+                    android:paddingEnd="11dp"
                     android:paddingTop="6dp"
                     android:paddingBottom="6dp"
                     android:background="@drawable/tools_pageedit_vdirection_bg"
@@ -128,7 +132,7 @@
                     app:layout_constraintTop_toTopOf="parent"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:srcCompat="@drawable/tools_ic_pageedit_direction_verticle"
-                    app:tint="@color/tools_on_primary"
+                    app:tint="@color/tools_icon_status_color"
                     />
             </androidx.constraintlayout.widget.ConstraintLayout>
 
@@ -137,13 +141,14 @@
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginLeft="15dp">
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp">
                 <TextView
                     android:id="@+id/tv_tools_edit_page_insert_location_title"
                     android:layout_width="wrap_content"
                     android:layout_height="@dimen/tools_pageedit_line_height"
                     android:gravity="center"
-                    android:textColor="@color/tools_themes_dark"
+                    android:textColor="@color/tools_text_color_primary"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
                     android:text="@string/tools_page_edit_insert_page_pagelocation"
@@ -156,35 +161,43 @@
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/tv_tools_edit_page_insert_location_title"
                     >
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_homepage"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
                         android:checked="true"
-                        android:text="@string/tools_page_edit_insert_page_home_page"/>
+                        android:textColor="@color/tools_radio_btn_text_status_color"
+                        android:text="@string/tools_page_edit_insert_page_home_page" />
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_lastpage"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
+                        android:checked="false"
+                        android:textColor="@color/tools_radio_btn_text_status_color"
                         android:layout_height="@dimen/tools_pageedit_line_height"
                         android:text="@string/tools_page_edit_insert_page_last_page"/>
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_before"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
+                        android:checked="false"
+                        android:textColor="@color/tools_radio_btn_text_status_color"
                         android:text="@string/tools_page_edit_insert_page_before"/>
                     <androidx.appcompat.widget.AppCompatEditText
                         android:id="@+id/et_tool_edit_page_enterpage"
                         android:hint="@string/tools_page_edit_insert_page_enterpage_tint"
                         android:gravity="bottom"
                         android:inputType="number"
-                        android:layout_marginLeft="15dp"
-                        android:layout_marginRight="15dp"
+                        android:textColorHint="@color/tools_text_color_hint"
+                        android:textSize="14sp"
                         android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"/>
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_after"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
+                        android:textColor="@color/tools_radio_btn_text_status_color"
                         android:text="@string/tools_page_edit_insert_page_after"/>
                 </RadioGroup>
             </androidx.constraintlayout.widget.ConstraintLayout>

+ 76 - 57
compdfkit-tools/src/main/res/layout/tools_pageedit_insert_pdf_page_dialog_fragment.xml

@@ -9,10 +9,10 @@
         android:layout_width="match_parent"
         android:layout_height="?android:attr/actionBarSize"
         android:elevation="4dp"
+        android:title="@string/tools_document_info"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:title="@string/tools_document_info" />
+        app:layout_constraintTop_toTopOf="parent" />
 
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
@@ -30,38 +30,41 @@
             <View style="@style/tools_document_info_dividing_line_style" />
 
             <androidx.constraintlayout.widget.ConstraintLayout
-                android:layout_marginLeft="15dp"
-                android:layout_marginRight="15dp"
                 android:layout_width="match_parent"
-                android:layout_height="@dimen/tools_pageedit_line_height">
+                android:layout_height="@dimen/tools_pageedit_line_height"
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp">
+
                 <TextView
                     style="@style/tools_edit_page_insertpage_pagesize_style"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintBottom_toBottomOf="parent"
                     android:text="@string/tools_page_edit_insert_page_filename"
-                    />
+                    android:textColor="@color/tools_text_color_primary"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/iv_tool_insert_page_right"
                     android:layout_width="40dp"
                     android:layout_height="40dp"
-                    android:padding="8dp"
                     android:background="@drawable/tools_common_oval_ripple"
+                    android:padding="8dp"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintDimensionRatio="1:1"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
                     app:srcCompat="@drawable/tools_ic_pageedit_arrow_right"
                     app:tint="@color/tools_on_primary" />
+
                 <androidx.appcompat.widget.AppCompatTextView
                     android:id="@+id/iv_tool_insert_page_filename"
                     style="@style/tools_edit_page_insertpage_cursize_style"
                     android:singleLine="true"
-                    app:layout_constraintEnd_toStartOf="@+id/iv_tool_insert_page_right"
-                    app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintBottom_toBottomOf="parent"
                     android:text="select a file"
-                    />
+                    android:textColor="@color/tools_text_color_primary"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toStartOf="@+id/iv_tool_insert_page_right"
+                    app:layout_constraintTop_toTopOf="parent" />
             </androidx.constraintlayout.widget.ConstraintLayout>
 
             <View style="@style/tools_document_info_dividing_line_style" />
@@ -69,112 +72,128 @@
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginLeft="15dp">
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp">
+
                 <TextView
                     android:id="@+id/tv_tools_edit_page_insert_from_location_title"
                     android:layout_width="wrap_content"
                     android:layout_height="@dimen/tools_pageedit_line_height"
                     android:gravity="center"
-                    android:textColor="@color/tools_themes_dark"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
                     android:text="@string/tools_page_edit_insert_page_pagelocation"
-                    />
+                    android:textColor="@color/tools_text_color_primary"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
                 <RadioGroup
                     android:id="@+id/rp_tools_edit_page_insertpage_from_location"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/tv_tools_edit_page_insert_from_location_title"
-                    >
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_tools_edit_page_insert_from_location_title">
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_from_all"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
                         android:checked="true"
-                        android:text="@string/tools_page_edit_insert_page_allpage"/>
+                        android:text="@string/tools_page_edit_insert_page_allpage"
+                        android:textColor="@color/tools_radio_btn_text_status_color" />
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_from_odd"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
-                        android:text="@string/tools_page_edit_insert_page_oddpage"/>
+                        android:text="@string/tools_page_edit_insert_page_oddpage"
+                        android:textColor="@color/tools_radio_btn_text_status_color" />
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_from_even"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
-                        android:text="@string/tools_page_edit_insert_page_evenpage"/>
+                        android:text="@string/tools_page_edit_insert_page_evenpage"
+                        android:textColor="@color/tools_radio_btn_text_status_color" />
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_from_specify"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
-                        android:text="@string/tools_page_edit_insert_page_specifypage"/>
+                        android:text="@string/tools_page_edit_insert_page_specifypage"
+                        android:textColor="@color/tools_radio_btn_text_status_color" />
                 </RadioGroup>
             </androidx.constraintlayout.widget.ConstraintLayout>
 
             <androidx.appcompat.widget.AppCompatEditText
                 android:id="@+id/et_tool_edit_page_from_enterpage"
-                android:hint="@string/tools_page_edit_insert_page_enterpage_tint"
-                android:gravity="bottom"
-                android:layout_marginLeft="15dp"
-                android:layout_marginRight="15dp"
                 android:layout_width="match_parent"
-                android:layout_height="@dimen/tools_pageedit_line_height"/>
+                android:layout_height="@dimen/tools_pageedit_line_height"
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp"
+                android:gravity="bottom"
+                android:hint="@string/tools_page_edit_insert_page_enterpage_tint"
+                android:textSize="14sp" />
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginLeft="15dp">
+                android:layout_marginStart="16dp"
+                android:layout_marginEnd="16dp">
+
                 <TextView
                     android:id="@+id/tv_tools_edit_page_insert_location_title"
                     android:layout_width="wrap_content"
                     android:layout_height="@dimen/tools_pageedit_line_height"
                     android:gravity="center"
-                    android:textColor="@color/tools_themes_dark"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
                     android:text="@string/tools_page_edit_insert_page_pagelocation"
-                    />
+                    android:textColor="@color/tools_text_color_primary"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
                 <RadioGroup
                     android:id="@+id/rp_tools_edit_page_insertpage_location"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/tv_tools_edit_page_insert_location_title"
-                    >
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_tools_edit_page_insert_location_title">
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_homepage"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
                         android:checked="true"
-                        android:text="@string/tools_page_edit_insert_page_home_page"/>
+                        android:textColor="@color/tools_radio_btn_text_status_color"
+                        android:text="@string/tools_page_edit_insert_page_home_page" />
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_lastpage"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
-                        android:text="@string/tools_page_edit_insert_page_last_page"/>
+                        android:textColor="@color/tools_radio_btn_text_status_color"
+                        android:text="@string/tools_page_edit_insert_page_last_page" />
+
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_before"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
-                        android:text="@string/tools_page_edit_insert_page_before"/>
+                        android:textColor="@color/tools_radio_btn_text_status_color"
+                        android:text="@string/tools_page_edit_insert_page_before" />
 
                     <androidx.appcompat.widget.AppCompatEditText
                         android:id="@+id/et_tool_edit_page_enterpage"
-                        android:hint="@string/tools_page_edit_insert_page_enterpage_tint"
-                        android:gravity="bottom"
-                        android:inputType="number"
-                        android:layout_marginLeft="15dp"
-                        android:layout_marginRight="15dp"
                         android:layout_width="match_parent"
-                        android:layout_height="@dimen/tools_pageedit_line_height"/>
+                        android:layout_height="@dimen/tools_pageedit_line_height"
+                        android:textSize="14sp"
+                        android:gravity="bottom"
+                        android:hint="@string/tools_page_edit_insert_page_enterpage_tint"
+                        android:inputType="number" />
 
                     <RadioButton
                         android:id="@+id/rb_tools_edit_page_insert_location_after"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
                         android:layout_height="@dimen/tools_pageedit_line_height"
-                        android:text="@string/tools_page_edit_insert_page_after"/>
+                        android:text="@string/tools_page_edit_insert_page_after" />
                 </RadioGroup>
             </androidx.constraintlayout.widget.ConstraintLayout>
 

+ 4 - 2
compdfkit-tools/src/main/res/layout/tools_pageedit_pagesize_item.xml

@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
+    android:layout_width="match_parent"
+    android:theme="@style/Tools_Base_Theme.BasicBottomSheetDialogStyle"
+    style="@style/Tools_Base_Theme.BasicBottomSheetDialogStyle"
     android:layout_height="@dimen/tools_pageedit_line_height"
-    android:buttonTint="#1460f3"
+    android:textColor="@color/tools_radio_btn_text_status_color"
     android:text="@string/tools_page_edit_insert_page_allpage"/>
 

+ 204 - 180
compdfkit-tools/src/main/res/layout/tools_pageedit_tool_bar.xml

@@ -1,189 +1,213 @@
 <?xml version="1.0" encoding="utf-8"?>
 <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="?android:attr/actionBarSize"
     android:fadeScrollbars="false"
     android:fadingEdge="none"
-    android:scrollbars="none"
-    android:layout_width="wrap_content"
-    android:layout_height="?android:attr/actionBarSize">
+    android:scrollbars="none">
 
-<LinearLayout
-    android:layout_width="wrap_content"
-    android:clickable="true"
-    android:focusable="true"
-    android:layout_height="?android:attr/actionBarSize"
-    android:background="@color/tools_color_primary"
-    android:animateLayoutChanges="true"
-    android:elevation="4dp">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/ll_insert"
-        android:layout_width="70dp"
-        android:layout_height="match_parent"
-        android:clickable="true"
-        android:focusable="true"
-        android:foreground="@drawable/tools_common_btn_rectangle_ripple">
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_insert"
-            android:layout_width="22dp"
-            android:layout_height="20dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@+id/tv_insert"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:src="@drawable/tools_ic_pageedit_insert"/>
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_insert"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/iv_insert"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/tools_page_edit_toolbar_insert"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/ll_replace"
-        android:layout_width="70dp"
-        android:layout_height="match_parent"
-        android:clickable="true"
-        android:focusable="true"
-        android:foreground="@drawable/tools_common_btn_rectangle_ripple">
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_replace"
-            android:layout_width="22dp"
-            android:layout_height="20dp"
-            app:layout_constraintVertical_chainStyle="packed"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@+id/tv_replace"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:src="@drawable/tools_ic_pageedit_replace"/>
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_replace"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintVertical_chainStyle="packed"
-            app:layout_constraintTop_toBottomOf="@+id/iv_replace"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/tools_page_edit_toolbar_replace"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/ll_extract"
-        android:layout_width="70dp"
-        android:layout_height="match_parent"
-        android:clickable="true"
-        android:focusable="true"
-        android:foreground="@drawable/tools_common_btn_rectangle_ripple"
-        android:gravity="center_horizontal">
-        <androidx.appcompat.widget.AppCompatImageView
-            android:layout_width="22dp"
-            android:layout_height="20dp"
-            android:id="@+id/iv_extract"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@+id/tv_extract"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:src="@drawable/tools_ic_pageedit_extract"/>
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_extract"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/iv_extract"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/tools_page_edit_toolbar_extract"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/ll_copy"
-        android:layout_width="70dp"
-        android:layout_height="match_parent"
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="?android:attr/actionBarSize"
+        android:animateLayoutChanges="true"
+        android:background="@color/tools_color_primary"
         android:clickable="true"
-        android:focusable="true"
-        android:foreground="@drawable/tools_common_btn_rectangle_ripple"
-        android:gravity="center_horizontal">
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_copy"
-            android:layout_width="22dp"
-            android:layout_height="20dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@+id/tv_copy"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:src="@drawable/tools_ic_pageedit_copy"/>
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_copy"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/iv_copy"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/tools_page_edit_toolbar_copy"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/ll_rotate"
-        android:layout_width="70dp"
-        android:layout_height="match_parent"
-        android:clickable="true"
-        android:focusable="true"
-        android:foreground="@drawable/tools_common_btn_rectangle_ripple"
-        android:gravity="center_horizontal">
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_rotate"
-            android:layout_width="22dp"
-            android:layout_height="20dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@+id/tv_rotate"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:src="@drawable/tools_ic_pageedit_rotate"/>
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_rotate"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/iv_rotate"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/tools_page_edit_toolbar_rotate"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/ll_delete"
-        android:layout_width="70dp"
-        android:layout_height="match_parent"
-        android:clickable="true"
-        android:focusable="true"
-        android:foreground="@drawable/tools_common_btn_rectangle_ripple"
-        android:gravity="center_horizontal">
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_delete"
-            android:layout_width="22dp"
-            android:layout_height="20dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@+id/tv_delete"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:src="@drawable/tools_ic_pageedit_delete"/>
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_delete"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toBottomOf="@+id/iv_delete"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/tools_page_edit_toolbar_delete"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</LinearLayout>
+        android:elevation="4dp"
+        android:focusable="true">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/ll_insert"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            android:background="@drawable/tools_common_btn_rectangle_ripple"
+            android:clickable="true"
+            android:focusable="true">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/iv_insert"
+                android:layout_width="22dp"
+                android:layout_height="20dp"
+                android:src="@drawable/tools_ic_pageedit_insert"
+                app:layout_constraintBottom_toTopOf="@+id/tv_insert"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="@color/tools_text_color_primary" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_insert"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tools_page_edit_toolbar_insert"
+                android:textColor="@color/tools_text_color_primary"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/iv_insert" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/ll_replace"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            android:background="@drawable/tools_common_btn_rectangle_ripple"
+            android:clickable="true"
+            android:focusable="true">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/iv_replace"
+                android:layout_width="22dp"
+                android:layout_height="20dp"
+                android:src="@drawable/tools_ic_pageedit_replace"
+                app:layout_constraintBottom_toTopOf="@+id/tv_replace"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="@color/tools_text_color_primary" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_replace"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tools_page_edit_toolbar_replace"
+                android:textColor="@color/tools_text_color_primary"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/iv_replace"
+                app:layout_constraintVertical_chainStyle="packed" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/ll_extract"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            android:clickable="true"
+            android:focusable="true"
+            android:foreground="@drawable/tools_common_btn_rectangle_ripple"
+            android:gravity="center_horizontal">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/iv_extract"
+                android:layout_width="22dp"
+                android:layout_height="20dp"
+                android:src="@drawable/tools_ic_pageedit_extract"
+                app:layout_constraintBottom_toTopOf="@+id/tv_extract"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="@color/tools_text_color_primary" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_extract"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tools_page_edit_toolbar_extract"
+                android:textColor="@color/tools_text_color_primary"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/iv_extract" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/ll_copy"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            android:clickable="true"
+            android:focusable="true"
+            android:foreground="@drawable/tools_common_btn_rectangle_ripple"
+            android:gravity="center_horizontal">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/iv_copy"
+                android:layout_width="22dp"
+                android:layout_height="20dp"
+                android:src="@drawable/tools_ic_pageedit_copy"
+                app:layout_constraintBottom_toTopOf="@+id/tv_copy"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="@color/tools_text_color_primary" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_copy"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tools_page_edit_toolbar_copy"
+                android:textColor="@color/tools_text_color_primary"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/iv_copy" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/ll_rotate"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            android:clickable="true"
+            android:focusable="true"
+            android:foreground="@drawable/tools_common_btn_rectangle_ripple"
+            android:gravity="center_horizontal">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/iv_rotate"
+                android:layout_width="22dp"
+                android:layout_height="20dp"
+                android:src="@drawable/tools_ic_pageedit_rotate"
+                app:layout_constraintBottom_toTopOf="@+id/tv_rotate"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="@color/tools_text_color_primary" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_rotate"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tools_page_edit_toolbar_rotate"
+                android:textColor="@color/tools_text_color_primary"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/iv_rotate" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/ll_delete"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            android:clickable="true"
+            android:focusable="true"
+            android:foreground="@drawable/tools_common_btn_rectangle_ripple"
+            android:gravity="center_horizontal">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/iv_delete"
+                android:layout_width="22dp"
+                android:layout_height="20dp"
+                android:src="@drawable/tools_ic_pageedit_delete"
+                app:layout_constraintBottom_toTopOf="@+id/tv_delete"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="@color/tools_text_color_primary" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tv_delete"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tools_page_edit_toolbar_delete"
+                android:textColor="@color/tools_text_color_primary"
+
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/iv_delete" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+    </LinearLayout>
 
 </HorizontalScrollView>

+ 1 - 1
form-ctrl-demo/src/main/java/com/compdfkit/demo/form/PDFFormSampleActivity.java

@@ -97,7 +97,7 @@ public class PDFFormSampleActivity extends CBasicActivity {
             } else if (cpdfBaseAnnot instanceof CPDFComboboxWidgetImpl) {
                 // When the ComboBox form is created, display an editing dialog for adding list data
                 CPDFAnnotationManager annotationManager = new CPDFAnnotationManager();
-                annotationManager.showFormListEditFragment(getSupportFragmentManager(), cpdfBaseAnnot, cpdfPageView,true);
+                annotationManager.showFormComboBoxEditFragment(getSupportFragmentManager(), cpdfBaseAnnot, cpdfPageView,true);
             } else if (cpdfBaseAnnot instanceof CPDFPushbuttonWidgetImpl) {
                 // When the PushButton form is created, display a dialog for editing the action method
                 CPDFAnnotationManager annotationManager = new CPDFAnnotationManager();

+ 2 - 0
pageedit-ctrl-demo/src/main/java/com/compdfkit/demo/pageedit/MainActivity.java

@@ -2,6 +2,7 @@ package com.compdfkit.demo.pageedit;
 
 import android.Manifest;
 import android.content.Intent;
+import android.graphics.Paint;
 import android.net.Uri;
 import android.os.Bundle;
 import android.view.View;
@@ -9,6 +10,7 @@ import android.view.View;
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 
 import com.compdfkit.demo.pageedit.databinding.ActivityMainBinding;
 import com.compdfkit.tools.common.activity.CBasicActivity;