Skip to content

Commit 7b16ee8

Browse files
Merge pull request #353 from transoceanic/patch-1
Add support for right to left direction languages
2 parents c95dbcb + ba3a440 commit 7b16ee8

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

src/android/InAppBrowser.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ Licensed to the Apache Software Foundation (ASF) under one
8585
import java.util.HashMap;
8686
import java.util.StringTokenizer;
8787

88+
import android.content.res.Configuration;
89+
8890
@SuppressLint("SetJavaScriptEnabled")
8991
public class InAppBrowser extends CordovaPlugin {
9092

@@ -745,8 +747,10 @@ private View createCloseButton(int id){
745747
_close = close;
746748
}
747749

750+
Configuration config = activityRes.getConfiguration();
751+
boolean isLeftToRight = config.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
748752
RelativeLayout.LayoutParams closeLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
749-
closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
753+
closeLayoutParams.addRule(isLeftToRight ? RelativeLayout.ALIGN_PARENT_RIGHT : RelativeLayout.ALIGN_PARENT_LEFT);
750754
_close.setLayoutParams(closeLayoutParams);
751755

752756
if (Build.VERSION.SDK_INT >= 16)
@@ -773,6 +777,9 @@ public void run() {
773777
dialog.dismiss();
774778
};
775779

780+
Configuration config = cordova.getActivity().getResources().getConfiguration();
781+
boolean isLeftToRight = config.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
782+
776783
// Let's create the main dialog
777784
dialog = new InAppBrowserDialog(cordova.getActivity(), android.R.style.Theme_NoTitleBar);
778785
dialog.getWindow().getAttributes().windowAnimations = android.R.style.Animation_Dialog;
@@ -790,25 +797,25 @@ public void run() {
790797
toolbar.setBackgroundColor(toolbarColor);
791798
toolbar.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, this.dpToPixels(44)));
792799
toolbar.setPadding(this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2));
793-
toolbar.setHorizontalGravity(Gravity.LEFT);
800+
toolbar.setHorizontalGravity(isLeftToRight ? Gravity.LEFT : Gravity.RIGHT);
794801
toolbar.setVerticalGravity(Gravity.TOP);
795802

796803
// Action Button Container layout
797804
RelativeLayout actionButtonContainer = new RelativeLayout(cordova.getActivity());
798805
actionButtonContainer.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
799-
actionButtonContainer.setHorizontalGravity(Gravity.LEFT);
806+
actionButtonContainer.setHorizontalGravity(isLeftToRight ? Gravity.LEFT : Gravity.RIGHT);
800807
actionButtonContainer.setVerticalGravity(Gravity.CENTER_VERTICAL);
801808
actionButtonContainer.setId(Integer.valueOf(1));
802809

803810
// Back button
804811
ImageButton back = new ImageButton(cordova.getActivity());
805812
RelativeLayout.LayoutParams backLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
806-
backLayoutParams.addRule(RelativeLayout.ALIGN_LEFT);
813+
backLayoutParams.addRule(isLeftToRight ? RelativeLayout.ALIGN_LEFT : RelativeLayout.ALIGN_RIGHT);
807814
back.setLayoutParams(backLayoutParams);
808815
back.setContentDescription("Back Button");
809816
back.setId(Integer.valueOf(2));
810817
Resources activityRes = cordova.getActivity().getResources();
811-
int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
818+
int backResId = activityRes.getIdentifier(isLeftToRight ? "ic_action_previous_item" : "ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
812819
Drawable backIcon = activityRes.getDrawable(backResId);
813820
if (navigationButtonColor != "") back.setColorFilter(android.graphics.Color.parseColor(navigationButtonColor));
814821
if (Build.VERSION.SDK_INT >= 16)
@@ -830,11 +837,11 @@ public void onClick(View v) {
830837
// Forward button
831838
ImageButton forward = new ImageButton(cordova.getActivity());
832839
RelativeLayout.LayoutParams forwardLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
833-
forwardLayoutParams.addRule(RelativeLayout.RIGHT_OF, 2);
840+
forwardLayoutParams.addRule(isLeftToRight ? RelativeLayout.RIGHT_OF : RelativeLayout.LEFT_OF, 2);
834841
forward.setLayoutParams(forwardLayoutParams);
835842
forward.setContentDescription("Forward Button");
836843
forward.setId(Integer.valueOf(3));
837-
int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
844+
int fwdResId = activityRes.getIdentifier(isLeftToRight ? "ic_action_next_item" : "ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
838845
Drawable fwdIcon = activityRes.getDrawable(fwdResId);
839846
if (navigationButtonColor != "") forward.setColorFilter(android.graphics.Color.parseColor(navigationButtonColor));
840847
if (Build.VERSION.SDK_INT >= 16)
@@ -856,8 +863,8 @@ public void onClick(View v) {
856863
// Edit Text Box
857864
edittext = new EditText(cordova.getActivity());
858865
RelativeLayout.LayoutParams textLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
859-
textLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);
860-
textLayoutParams.addRule(RelativeLayout.LEFT_OF, 5);
866+
textLayoutParams.addRule(isLeftToRight ? RelativeLayout.RIGHT_OF : RelativeLayout.LEFT_OF, 1);
867+
textLayoutParams.addRule(isLeftToRight ? RelativeLayout.LEFT_OF : RelativeLayout.RIGHT_OF, 5);
861868
edittext.setLayoutParams(textLayoutParams);
862869
edittext.setId(Integer.valueOf(4));
863870
edittext.setSingleLine(true);
@@ -894,7 +901,7 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
894901
footerLayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
895902
footer.setLayoutParams(footerLayout);
896903
if (closeButtonCaption != "") footer.setPadding(this.dpToPixels(8), this.dpToPixels(8), this.dpToPixels(8), this.dpToPixels(8));
897-
footer.setHorizontalGravity(Gravity.LEFT);
904+
footer.setHorizontalGravity(isLeftToRight ? Gravity.LEFT : Gravity.RIGHT);
898905
footer.setVerticalGravity(Gravity.BOTTOM);
899906

900907
View footerClose = createCloseButton(7);

0 commit comments

Comments
 (0)