@@ -202,23 +202,24 @@ private void setRuleInView(RuleItem ruleItem, View view) {
202202 for (var declaration : ruleItem .rule ) {
203203 var property = declaration .getProperty ();
204204 switch (property ) {
205- case "position " -> {
205+ case "parent " -> {
206206 var value = declaration .get (0 ).toString ().trim ();
207- if ("relative" .equals (value )) {
208- var parentView = (ViewGroup ) view .getParent ();
209- if (parentView != null ) {
210- if (!(parentView instanceof FrameLayout ) && parentView .getTag () != "relative" ) {
211- var frameLayout = new FrameLayout (parentView .getContext ());
212- frameLayout .setTag ("relative" );
213- var params = new FrameLayout .LayoutParams (view .getLayoutParams ());
214- var viewRoot = (ViewGroup ) view .getRootView ();
215- viewRoot .addView (frameLayout , params );
216- parentView .removeView (view );
217- frameLayout .addView (view );
218- view = frameLayout ;
219- } else if (parentView .getTag () == "relative" ) {
220- view = parentView ;
221- }
207+ var parent = view .getRootView ();
208+ if (!"root" .equals (value )) {
209+ parent = parent .findViewById (Utils .getID (value , "id" ));
210+ }
211+ if (parent instanceof ViewGroup parentView ) {
212+ var oldParent = (View ) view .getParent ();
213+ if (oldParent .getTag () != "relative" ) {
214+ ((ViewGroup ) view .getParent ()).removeView (view );
215+ var frameLayout = new FrameLayout (parentView .getContext ());
216+ frameLayout .setTag ("relative" );
217+ var params = new FrameLayout .LayoutParams (view .getLayoutParams ());
218+ parentView .addView (frameLayout , 0 , params );
219+ frameLayout .addView (view );
220+ view = frameLayout ;
221+ } else if (oldParent .getTag () == "relative" ) {
222+ view = oldParent ;
222223 }
223224 }
224225 }
0 commit comments