Skip to content

Commit eda3515

Browse files
author
EKwong
committed
try to give FlowLayout an RTL function
1 parent 0cc775f commit eda3515

File tree

9 files changed

+85
-73
lines changed

9 files changed

+85
-73
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@
55
.DS_Store
66
/build
77
/captures
8+
/.idea/inspectionProfiles/
9+
/.idea/smartfox_info.xml
10+

.idea/gradle.xml

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FlowLayout.iml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<module external.linked.project.id="FlowLayout" external.linked.project.path="$MODULE_DIR$" external.root.project.path="/Volumes/Macintosh HD/Volumes/Macintosh HD/Users/zhanghongyang01/git-repo/mime/FlowLayout" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
2+
<module external.linked.project.id="FlowLayout" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
33
<component name="FacetManager">
44
<facet type="java-gradle" name="Java-Gradle">
55
<configuration>

flowlayout-lib/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ android {
2020
}
2121

2222
dependencies {
23-
compile fileTree(dir: 'libs', include: ['*.jar'])
23+
compile fileTree(include: ['*.jar'], dir: 'libs')
24+
compile 'com.android.support:support-v4:25.0.0'
2425
}
2526

2627
publish {

flowlayout-lib/flowlayout-lib.iml

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<module external.linked.project.id=":flowlayout-lib" external.linked.project.path="$MODULE_DIR$" external.root.project.path="/Volumes/Macintosh HD/Volumes/Macintosh HD/Users/zhanghongyang01/git-repo/mime/FlowLayout" external.system.id="GRADLE" external.system.module.group="com.zhy" external.system.module.version="1.0.3" type="JAVA_MODULE" version="4">
2+
<module external.linked.project.id=":flowlayout-lib" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
33
<component name="FacetManager">
44
<facet type="android-gradle" name="Android-Gradle">
55
<configuration>
@@ -9,7 +9,6 @@
99
<facet type="android" name="Android">
1010
<configuration>
1111
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12-
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
1312
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
1413
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
1514
<afterSyncTasks>
@@ -20,11 +19,11 @@
2019
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
2120
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
2221
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
23-
<option name="LIBRARY_PROJECT" value="true" />
22+
<option name="PROJECT_TYPE" value="1" />
2423
</configuration>
2524
</facet>
2625
</component>
27-
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
26+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
2827
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
2928
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
3029
<exclude-output />
@@ -48,59 +47,69 @@
4847
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
4948
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
5049
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
51-
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
5250
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
5351
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
5452
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
5553
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
5654
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
5755
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
5856
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
59-
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
6057
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
6158
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
6259
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
6360
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
6461
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
6562
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
6663
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
67-
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6864
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6965
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
73-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
74-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
75-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
76-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
77-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
7866
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
7967
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
8068
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
8169
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
8270
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
83-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
8471
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
8572
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
86-
<excludeFolder url="file://$MODULE_DIR$/build/docs" />
73+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
74+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
75+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
76+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
80+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8782
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
8883
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
8984
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-compat/25.0.0/jars" />
86+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-core-ui/25.0.0/jars" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-core-utils/25.0.0/jars" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-fragment/25.0.0/jars" />
89+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-media-compat/25.0.0/jars" />
90+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/25.0.0/jars" />
9091
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
9192
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
9293
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
9394
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
9495
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
96+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
9597
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
9698
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
99+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
97100
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
98-
<excludeFolder url="file://$MODULE_DIR$/build/libs" />
101+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/typedefs.txt" />
99102
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
100-
<excludeFolder url="file://$MODULE_DIR$/build/publications" />
101103
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
102104
</content>
103-
<orderEntry type="jdk" jdkName="Android API 25 Platform (1)" jdkType="Android SDK" />
105+
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
104106
<orderEntry type="sourceFolder" forTests="false" />
107+
<orderEntry type="library" exported="" name="com.android.support:support-fragment-25.0.0" level="project" />
108+
<orderEntry type="library" exported="" name="com.android.support:support-annotations:25.0.0@jar" level="project" />
109+
<orderEntry type="library" exported="" name="com.android.support:support-media-compat-25.0.0" level="project" />
110+
<orderEntry type="library" exported="" name="com.android.support:support-core-ui-25.0.0" level="project" />
111+
<orderEntry type="library" exported="" name="com.android.support:support-compat-25.0.0" level="project" />
112+
<orderEntry type="library" exported="" name="com.android.support:support-core-utils-25.0.0" level="project" />
113+
<orderEntry type="library" exported="" name="com.android.support:support-v4-25.0.0" level="project" />
105114
</component>
106115
</module>

flowlayout-lib/src/main/java/com/zhy/view/flowlayout/FlowLayout.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
import android.content.Context;
44
import android.content.res.TypedArray;
55
import android.util.AttributeSet;
6+
import android.util.LayoutDirection;
67
import android.view.View;
78
import android.view.ViewGroup;
9+
import android.support.v4.text.TextUtilsCompat;
810

911
import java.util.ArrayList;
12+
import java.util.Collections;
1013
import java.util.List;
14+
import java.util.Locale;
1115

1216
public class FlowLayout extends ViewGroup {
1317
private static final String TAG = "FlowLayout";
@@ -25,6 +29,14 @@ public FlowLayout(Context context, AttributeSet attrs, int defStyle) {
2529
super(context, attrs, defStyle);
2630
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.TagFlowLayout);
2731
mGravity = ta.getInt(R.styleable.TagFlowLayout_tag_gravity, LEFT);
32+
int layoutDirection = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault());
33+
if (layoutDirection == LayoutDirection.RTL) {
34+
if (mGravity == LEFT) {
35+
mGravity = RIGHT;
36+
} else {
37+
mGravity = LEFT;
38+
}
39+
}
2840
ta.recycle();
2941
}
3042

@@ -155,7 +167,10 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) {
155167
left = (width - currentLineWidth) / 2 + getPaddingLeft();
156168
break;
157169
case RIGHT:
158-
left = width - currentLineWidth + getPaddingLeft();
170+
// 适配了rtl,需要补偿一个padding值
171+
left = width - currentLineWidth + getPaddingLeft() - getPaddingLeft();
172+
// 适配了rtl,需要把lineViews里面的数组倒序排
173+
Collections.reverse(lineViews);
159174
break;
160175
}
161176

0 commit comments

Comments
 (0)