You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by cx...@apache.org on 2017/03/29 06:49:05 UTC
[13/18] incubator-weex git commit: * [android] add support for
aria-label and aria-hidden
* [android] add support for aria-label and aria-hidden
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/6c6577e4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/6c6577e4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/6c6577e4
Branch: refs/heads/0.12-dev
Commit: 6c6577e440a2eddda55c4c7853917e1b2479c128
Parents: d958281
Author: sospartan <so...@apache.org>
Authored: Thu Mar 23 11:37:11 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Thu Mar 23 16:52:21 2017 +0800
----------------------------------------------------------------------
.../java/com/taobao/weex/common/Constants.java | 2 ++
.../taobao/weex/ui/component/WXComponent.java | 25 ++++++++++++++++++++
.../com/taobao/weex/ui/component/WXText.java | 8 +++++++
.../com/taobao/weex/ui/view/WXTextView.java | 18 +++++++++++++-
4 files changed, 52 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6c6577e4/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
----------------------------------------------------------------------
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 682ab8e..57f6386 100755
--- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java
@@ -358,6 +358,8 @@ public class Constants {
String DELETE_CELL_ANIMATION = "deleteAnimation";
String AUTO = "auto";
String NORMAL = "normal";
+ String ARIA_LABEL = "ariaLabel";
+ String ARIA_HIDDEN = "ariaHidden";
}
public interface Value {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6c6577e4/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index fcf7aa4..8c1a622 100755
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -127,6 +127,7 @@
*/
package com.taobao.weex.ui.component;
+import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
@@ -135,6 +136,7 @@ import android.graphics.Rect;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
+import android.os.Build;
import android.os.Message;
import android.support.annotation.CallSuper;
import android.support.annotation.CheckResult;
@@ -763,6 +765,14 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi
String fixedSize = WXUtils.getString(param, PROP_FS_MATCH_PARENT);
setFixedSize(fixedSize);
return true;
+ case Constants.Name.ARIA_LABEL:
+ String label = WXUtils.getString(param,"");
+ setAriaLabel(label);
+ return true;
+ case Constants.Name.ARIA_HIDDEN:
+ boolean isHidden = WXUtils.getBoolean(param,false);
+ setAriaHidden(isHidden);
+ return true;
case Constants.Name.WIDTH:
case Constants.Name.MIN_WIDTH:
case Constants.Name.MAX_WIDTH:
@@ -795,6 +805,21 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi
}
}
+ @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
+ protected void setAriaHidden(boolean isHidden) {
+ View host = getHostView();
+ if(host != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
+ host.setImportantForAccessibility(isHidden?View.IMPORTANT_FOR_ACCESSIBILITY_NO:View.IMPORTANT_FOR_ACCESSIBILITY_YES);
+ }
+ }
+
+ protected void setAriaLabel(String label) {
+ View host = getHostView();
+ if(host != null){
+ host.setContentDescription(label);
+ }
+ }
+
/**
* Avoid large size view fail in GPU-Animation.
* @param fixedSize
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6c6577e4/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java
----------------------------------------------------------------------
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 a85c644..f1b3e0e 100755
--- 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
@@ -264,6 +264,14 @@ public class WXText extends WXComponent<WXTextView> {
}
@Override
+ protected void setAriaLabel(String label) {
+ WXTextView text = getHostView();
+ if(text != null){
+ text.setAriaLabel(label);
+ }
+ }
+
+ @Override
public void refreshData(WXComponent component) {
super.refreshData(component);
if (component instanceof WXText) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6c6577e4/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java
----------------------------------------------------------------------
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 d56b196..763328b 100755
--- 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
@@ -207,6 +207,7 @@ package com.taobao.weex.ui.view;
import android.content.Context;
import android.graphics.Canvas;
import android.text.Layout;
+import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
@@ -225,6 +226,8 @@ public class WXTextView extends View implements WXGestureObservable, IWXTextView
private WeakReference<WXText> mWeakReference;
private WXGesture wxGesture;
private Layout textLayout;
+ private boolean mIsLabelSet = false;
+
public WXTextView(Context context) {
super(context);
}
@@ -266,7 +269,7 @@ public class WXTextView extends View implements WXGestureObservable, IWXTextView
public void setTextLayout(Layout layout) {
this.textLayout = layout;
- if(layout!=null){
+ if(layout!=null && !mIsLabelSet){
setContentDescription(layout.getText());
}
if (mWeakReference != null) {
@@ -277,6 +280,19 @@ public class WXTextView extends View implements WXGestureObservable, IWXTextView
}
}
+ public void setAriaLabel(String label){
+ if(!TextUtils.isEmpty(label)){
+ mIsLabelSet = true;
+ setContentDescription(label);
+ }else{
+ mIsLabelSet = false;
+ if(textLayout != null){
+ setContentDescription(textLayout.getText());
+ }
+ }
+
+ }
+
@Override
public void holdComponent(WXText component) {
mWeakReference = new WeakReference<>(component);