@@ -85,6 +85,8 @@ Licensed to the Apache Software Foundation (ASF) under one
8585import java .util .HashMap ;
8686import java .util .StringTokenizer ;
8787
88+ import android .content .res .Configuration ;
89+
8890@ SuppressLint ("SetJavaScriptEnabled" )
8991public 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