private static void ClearUpViewGroup(ViewGroup grp) { try { for (int i = 0; i < grp.ChildCount; i++) { var view = grp.GetChildAt(i); var viewGroup = view as ViewGroup; if (viewGroup != null) { ClearUpViewGroup(viewGroup); grp.RemoveView(viewGroup); viewGroup.Dispose(); continue; } var imageView = view as ImageView; if (imageView != null) imageView.Recycle(); grp.RemoveView(view); view.Dispose(); view = null; } } catch { Console.WriteLine("ClearUpViewGroup Exception"); } }
public void PrintViewHierarchy(Android.Views.ViewGroup vg, StringBuilder sb, int level = 0) { for (int i = 0; i < vg.ChildCount; i++) { var v = vg.GetChildAt(i); var vElement = v as IFrameworkElement; var desc = string.Concat(Enumerable.Repeat(" |", level)) + $" [{i+1}/{vg.ChildCount}] {v.Class.SimpleName}"; if (vElement != null) { desc += $" -- ActualHeight:{vElement.ActualHeight}, ActualWidth:{vElement.ActualWidth}, Height:{vElement.Height}, Width:{vElement.Width}, DataContext:{vElement.DataContext?.GetType().FullName}"; var vTextBlock = vElement as TextBlock; if (vTextBlock != null) { desc += $", Text: {vTextBlock.Text}"; } } sb.AppendLine(desc); var childViewGroup = v as Android.Views.ViewGroup; if (childViewGroup != null) { PrintViewHierarchy(childViewGroup, sb, level + 1); } } }
public static object[] getChilds(Android.Views.View pView) { List <object> list = new List <object>(); if (pView != null) { if (pView as IIndestructable == null) { // ToolMobile.log("getChilds form [" + pView.GetType().FullName + "]"); Android.Views.ViewGroup g = pView as Android.Views.ViewGroup; if (g != null) { for (int i = 0; i < g.ChildCount; ++i) { View v = g.GetChildAt(i); // ToolMobile.log("getChilds added child [" + v.GetType().FullName + "]"); list.Add(v); } } else { //ToolMobile.log("getChilds not for ViewGroup [" + pView.GetType().FullName + "]"); } } } return(list.ToArray()); }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (resultCode == Result.Ok) { TextView TimerText = ((TextView)(lastClicked.GetChildAt(2))); TimerText.Text = "IN TRANSIT"; } }
public static IEnumerable <T> GetChildrenOfType <T>(this ViewGroup viewGroup) where T : View { for (int i = 0; i < viewGroup.ChildCount; i++) { View child = viewGroup.GetChildAt(i); if (child is T expectedChild) { yield return(expectedChild); } if (child is ViewGroup childViewGroup) { foreach (var expectedInnerChild in GetChildrenOfType <T>(childViewGroup)) { yield return(expectedInnerChild); } } } }
static IEnumerable <T> GetChildrenOfType <T>(AViewGroup self) where T : AView { for (var i = 0; i < self.ChildCount; i++) { AView child = self.GetChildAt(i); var typedChild = child as T; if (typedChild != null) { yield return(typedChild); } if (child is AViewGroup) { IEnumerable <T> myChildren = GetChildrenOfType <T>(child as AViewGroup); foreach (T nextChild in myChildren) { yield return(nextChild); } } } }
/// <summary> /// Helper method for printing on output all children from ViewGroup. /// </summary> public static void PrintChildren(this ViewGroup viewGroup) { System.Diagnostics.Debug.WriteLine(_currentPadding + viewGroup.GetType().Name + " (ViewGroup)"); _currentPadding += PADDING_STRING; for (int i = 0; i < viewGroup.ChildCount; i++) { View child = viewGroup.GetChildAt(i); if (!(child is ViewGroup)) { System.Diagnostics.Debug.WriteLine(_currentPadding + child.GetType().Name); } if (child is ViewGroup childViewGroup) { PrintChildren(childViewGroup); } } _currentPadding = _currentPadding.Remove(_currentPadding.Length - PADDING_STRING.Length); }
public static T FindChildOfType <T>(this NativeView parent) where T : ChildView { if (parent == null) { return(null); } if (parent.ChildCount == 0) { return(null); } for (var i = 0; i < parent.ChildCount; i++) { var child = parent.GetChildAt(i); if (child is T typedChild) { return(typedChild); } if (!(child is NativeView)) { continue; } var result = FindChildOfType <T>(child as NativeView); if (result != null) { return(result); } } return(null); }
private void InvalidateDividersForScrollingView(ViewGroup view, bool setForTop, bool setForBottom, bool hasButtons) { if (setForTop && view.ChildCount > 0) { mDrawTopDivider = mTitleBar != null && mTitleBar.Visibility != ViewStates.Gone && view.ScrollY + view.PaddingTop > view.GetChildAt(0).Top; } if (setForBottom && view.ChildCount > 0) { mDrawBottomDivider = hasButtons && view.ScrollY + view.Height - view.PaddingBottom < view.GetChildAt(view.ChildCount - 1).Bottom; } }
public static void DisposeChildren (ViewGroup vg) { if (vg.Handle == IntPtr.Zero) { // see http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/#Disposing_of_Peer_instances return; } for (int i = 0; i < vg.ChildCount; i++) { vg.GetChildAt (i).Dispose (); } }
private void SetupGravity(ViewGroup view) { LinearLayout itemRoot = (LinearLayout)view; GravityFlags gravityInt = GravityExt.GetGravity(itemGravity); itemRoot.SetGravity(gravityInt | GravityFlags.CenterVertical); if (view.ChildCount == 2) { if (itemGravity == GravityEnum.End && !IsRtl() && view.GetChildAt(0) is CompoundButton) { CompoundButton first = (CompoundButton)view.GetChildAt(0); view.RemoveView(first); TextView second = (TextView)view.GetChildAt(0); view.RemoveView(second); second.SetPadding(second.PaddingRight, second.PaddingTop, second.PaddingLeft, second.PaddingBottom); view.AddView(second); view.AddView(first); } else if (itemGravity == GravityEnum.Start && IsRtl() && view.GetChildAt(1) is CompoundButton) { CompoundButton first = (CompoundButton)view.GetChildAt(1); view.RemoveView(first); TextView second = (TextView)view.GetChildAt(0); view.RemoveView(second); second.SetPadding(second.PaddingRight, second.PaddingTop, second.PaddingRight, second.PaddingBottom); view.AddView(first); view.AddView(second); } } }
private static void UpdateEditedItemSockets(ViewGroup layout) { var editedGems = new List<SocketedGem>(); for (var index = 0; index < layout.ChildCount; index++) { var view = layout.GetChildAt(index); if (view.FindViewById<Spinner>(Resource.Id.socketLabel) != null) { var tag = (JavaLangObject<Item>)(view.Tag); if (tag != null) { Console.WriteLine(tag.Value); editedGems.Add(new SocketedGem(tag.Value)); } } } D3Context.Instance.EditingItem.Gems = editedGems.ToArray(); }
private static void UpdateEditedItem(ViewGroup layout) { var numberDecimalSeparator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator; var attr = new ItemAttributes(); for (var index = 0; index < layout.ChildCount; index++) { var view = layout.GetChildAt(index); var editText = view.FindViewById<EditText>(Resource.Id.attributeValue); if (editText != null) { var tag = (JavaLangObject<Field>)(view.Tag); Console.WriteLine(tag.Value + " = " + editText.Text); var text = editText.Text.Replace(numberDecimalSeparator == "," ? "." : ",", numberDecimalSeparator); double value; if (Double.TryParse(text, out value)) { tag.Value.SetValue(attr, value); } } } D3Context.Instance.EditingItem.AttributesRaw += attr; }
private void AddListenterToButtons(ViewGroup parent) { for (var i = 0; i < parent.ChildCount; i++) { var child = parent.GetChildAt(i); if (child is ViewGroup) { AddListenterToButtons(child as ViewGroup); } else if (child is Button) { child.SetOnClickListener(this); } } }
private static View GetTopView(ViewGroup viewGroup) { if (viewGroup == null || viewGroup.ChildCount == 0) return null; View topView = null; for (int i = viewGroup.ChildCount - 1; i >= 0; i--) { View child = viewGroup.GetChildAt(i); if (child.Visibility == ViewStates.Visible && child.Top == 0) { topView = child; break; } } return topView; }
private void initValue(Activity activity) { this.activity = activity; leftMenuItems = new List<ResideMenuItem>(); rightMenuItems = new List<ResideMenuItem>(); ignoredViews = new List<View>(); viewDecor = (ViewGroup)activity.Window.DecorView; viewActivity = new TouchDisableView(this.activity); View mContent = viewDecor.GetChildAt(0); viewDecor.RemoveViewAt(0); viewActivity.setContent(mContent); AddView(viewActivity); ViewGroup parent = (ViewGroup)scrollViewLeftMenu.Parent; parent.RemoveView(scrollViewLeftMenu); parent.RemoveView(scrollViewRightMenu); }
bool CanScrollUp(ViewGroup viewGroup) { if (viewGroup == null) return base.CanChildScrollUp(); var sdk = (int)global::Android.OS.Build.VERSION.SdkInt; if (sdk >= 16) { #if __ANDROID_16__ //is a scroll container such as listview, scroll view, gridview if (viewGroup.IsScrollContainer) { return base.CanChildScrollUp(); } #endif } //if you have something custom and you can't scroll up you might need to enable this //for instance on a custom recycler view where the code above isn't working! for (int i = 0; i < viewGroup.ChildCount; i++) { var child = viewGroup.GetChildAt(i); if (child is Android.Widget.AbsListView) { var list = child as Android.Widget.AbsListView; if (list != null) { if (list.FirstVisiblePosition == 0) { var subChild = list.GetChildAt(0); return subChild != null && subChild.Top != 0; } //if children are in list and we are scrolled a bit... sure you can scroll up return true; } } else if (child is Android.Widget.ScrollView) { var scrollview = child as Android.Widget.ScrollView; return (scrollview.ScrollY <= 0.0); } else if (child is Android.Support.V4.Widget.SwipeRefreshLayout) { return CanScrollUp(child as ViewGroup); } //else if something else like a recycler view? } return false; }
private IEnumerable<KeyValuePair<string, View>> GetViews(ViewGroup viewGroup) { for (int i = 0; i < viewGroup.ChildCount; i++) { var view = viewGroup.GetChildAt(i); var group = view as ViewGroup; if (group != null) { var children = GetViews(group); foreach (var child in children) { yield return child; } } if (view.Id > 0) { string name = viewGroup.Context.Resources.GetResourceEntryName(view.Id); yield return new KeyValuePair<string, View>(name, view); } } }
static void SetThemeOnChildren(ViewGroup parentViewGroup, FlatTheme theme, bool includeNormalViews) { for (int i = 0; i < parentViewGroup.ChildCount; i++) { var view = parentViewGroup.GetChildAt (i); var vtype = view.GetType (); if (view is FlatButton) (view as FlatButton).Theme = theme; else if (view is FlatCheckBox) (view as FlatCheckBox).Theme = theme; else if (view is FlatEditText) (view as FlatEditText).Theme = theme; else if (view is FlatRadioButton) (view as FlatRadioButton).Theme = theme; else if (view is FlatSeekBar) (view as FlatSeekBar).Theme = theme; else if (view is FlatTextView) (view as FlatTextView).Theme = theme; else if (view is FlatToggleButton) (view as FlatToggleButton).Theme = theme; //TODO: Need to add code for settheme static method if (includeNormalViews) { if (vtype == typeof(CheckBox)) FlatCheckBox.SetTheme(view as CheckBox, theme); else if (vtype == typeof(RadioButton)) FlatRadioButton.SetTheme(view as RadioButton, theme); else if (vtype == typeof(ToggleButton)) FlatToggleButton.SetTheme(view as ToggleButton, theme); else if (vtype == typeof(EditText)) FlatEditText.SetTheme(view as EditText, theme); else if (vtype == typeof(TextView)) FlatTextView.SetTheme(view as TextView, theme); else if (vtype == typeof(SeekBar)) FlatSeekBar.SetTheme(view as SeekBar, theme); else if (vtype == typeof(Button)) FlatButton.SetTheme(view as Button, theme); } var childViewGroup = view as ViewGroup; if (childViewGroup != null) SetThemeOnChildren (childViewGroup, theme, includeNormalViews); } }
public static void RemoveBitmapsOfButtonStroked(ViewGroup mainView) { for(int i = 0; i < mainView.ChildCount; i++) { View child = mainView.GetChildAt(i); Type childType = child.GetType(); if(childType == typeof(ButtonStroked)) ((ButtonStroked)child).RemoveBitmaps(); else if(childType.BaseType == typeof(ViewGroup)) RemoveBitmapsOfButtonStroked((ViewGroup) child); } }
void DisableTaskInput( ViewGroup frame, bool enable ) { if ( frame as ListView != null || frame as ScrollView != null ) { frame.Enabled = enable; frame.Focusable = enable; frame.FocusableInTouchMode = enable; } int i; for ( i = 0; i < frame.ChildCount; i++ ) { View child = frame.GetChildAt( i ) as View; if ( (child as ViewGroup) != null ) { DisableTaskInput( (child as ViewGroup), enable ); } else { if ( child as ListView != null || child as ScrollView != null ) { child.Enabled = enable; child.Focusable = enable; child.FocusableInTouchMode = enable; } } } }
private static View GetBottomView(ViewGroup viewGroup) { if (viewGroup == null || viewGroup.ChildCount == 0) return null; View bottomView = null; for (int i = viewGroup.ChildCount - 1; i >= 0; i--) { View child = viewGroup.GetChildAt(i); if (child.Visibility == ViewStates.Visible && child.Bottom == viewGroup.MeasuredHeight) { bottomView = child; break; } } return bottomView; }