From 94ee706e997c1e5dc17b10454f9a4497bf8ab609 Mon Sep 17 00:00:00 2001 From: misakuo Date: Sat, 24 Feb 2018 10:55:33 +0800 Subject: [PATCH 1/2] *[feature] feature to copy text value --- .../com/taobao/weex/common/Constants.java | 1 + .../com/taobao/weex/ui/component/WXText.java | 17 +++----- .../com/taobao/weex/ui/view/WXTextView.java | 43 +++++++++++++++++++ 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java index 64b59c8290..86ef336a31 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java @@ -201,6 +201,7 @@ public interface Name { String STRATEGY = "strategy"; String ALLOW_COPY_PASTE = "allowCopyPaste"; + String ENABLE_COPY = "enableCopy"; diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java index 6a9a99a9eb..bb1bd4b39c 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java @@ -18,28 +18,19 @@ */ package com.taobao.weex.ui.component; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.support.annotation.NonNull; -import android.support.v4.content.LocalBroadcastManager; import android.text.Layout; -import com.taobao.weex.WXEnvironment; import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.WXSDKManager; import com.taobao.weex.annotation.Component; import com.taobao.weex.common.Constants; -import com.taobao.weex.dom.DOMActionContext; -import com.taobao.weex.dom.WXDomHandler; import com.taobao.weex.dom.WXDomObject; import com.taobao.weex.ui.ComponentCreator; import com.taobao.weex.ui.flat.FlatComponent; import com.taobao.weex.ui.flat.widget.TextWidget; import com.taobao.weex.ui.view.WXTextView; -import com.taobao.weex.utils.TypefaceUtil; -import com.taobao.weex.utils.WXLogUtils; +import com.taobao.weex.utils.WXUtils; import java.lang.reflect.InvocationTargetException; @@ -144,6 +135,12 @@ protected boolean setProperty(String key, Object param) { return true; case Constants.Name.FONT_FAMILY: return true; + case Constants.Name.ENABLE_COPY: + boolean enabled = WXUtils.getBoolean(param, false); + if (getHostView() != null) { + getHostView().enableCopy(enabled); + } + return true; default: return super.setProperty(key, param); } diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java index a98be2267e..914171fe5f 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java @@ -18,11 +18,15 @@ */ package com.taobao.weex.ui.view; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.graphics.Canvas; import android.support.annotation.Nullable; +import android.support.v7.widget.PopupMenu; import android.text.Layout; import android.text.TextUtils; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; @@ -31,6 +35,7 @@ import com.taobao.weex.ui.view.gesture.WXGestureObservable; import java.lang.ref.WeakReference; +import java.util.Locale; /** * TextView wrapper @@ -118,4 +123,42 @@ public void holdComponent(WXText component) { public WXText getComponent() { return null != mWeakReference ? mWeakReference.get() : null; } + + public void enableCopy(boolean enable) { + if (enable) { + setOnLongClickListener(new OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + PopupMenu popupMenu = new PopupMenu(getContext(), WXTextView.this); + boolean isCN = false; + try { + isCN = Locale.getDefault().toString().startsWith("zh_CN"); + } catch (Throwable t) { + //ignore + } + final String title = isCN ? "复制" : "Copy"; + popupMenu.getMenu().add(title); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + if (title.equals(item.getTitle())) { + String data = getText().toString(); + ClipboardManager clipboardManager = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); + if (clipboardManager != null) { + ClipData clipData = ClipData.newPlainText(data, data); + clipboardManager.setPrimaryClip(clipData); + } + return true; + } + return false; + } + }); + popupMenu.show(); + return true; + } + }); + } else { + setOnLongClickListener(null); + } + } } From d67a3af27573f483cbe0022e1df6ee5103f260f7 Mon Sep 17 00:00:00 2001 From: misakuo Date: Wed, 28 Feb 2018 20:58:37 +0800 Subject: [PATCH 2/2] *[android] text localization --- .../src/main/java/com/taobao/weex/ui/view/WXTextView.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java index 914171fe5f..e4a98089d5 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java @@ -35,7 +35,6 @@ import com.taobao.weex.ui.view.gesture.WXGestureObservable; import java.lang.ref.WeakReference; -import java.util.Locale; /** * TextView wrapper @@ -130,13 +129,13 @@ public void enableCopy(boolean enable) { @Override public boolean onLongClick(View v) { PopupMenu popupMenu = new PopupMenu(getContext(), WXTextView.this); - boolean isCN = false; + String s = "Copy"; try { - isCN = Locale.getDefault().toString().startsWith("zh_CN"); + s = getContext().getResources().getString(android.R.string.copy); } catch (Throwable t) { //ignore } - final String title = isCN ? "复制" : "Copy"; + final String title = s; popupMenu.getMenu().add(title); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override