i find that changing settings programatically still triggers the onchange event. i also looked at a few android view classes. there doesn't appear to be a "reliable" method to check a view's "state", whatever that might mean. i say RELIABLE because, there is a method to do just that, but the documentation says the method can return null. that is exactly what i got when i tried to check the "state" of a view. so, no go...
i think you end up doing what you already are doing, or, possibly, removing the view and replacing it with the new view when the user changes some setting. that, too, could be monitored with a flag. user sees view, goes to settings panel (thus hiding view), makes changes, hides settings panel and sees new view like nothing happened. as soon as settings panel is visible, flag is set disallowing any change events. when panel is hidden, flag is reset and changes are good to go. it's irrelevant at that point whether has made changes or not. if he made changes, new view is already in place