I have a ListView which has custom elements inside of it. I want to create selectors for each of those elements. Selectors themselves will not be very complicated because they need to handle only background color while item is hovers/selected/etc. However colors for those selectors have to come from external source that is I need to be able to set them from variables, so some simple static code will not do.
Dynamic selector : During RPA flow, most of the values are static and predetermined. The ability to enter these values manually of programmatically is the use of a dynamic selector. For example, select a date in date selector control on a website.
One of the ways in which UI elements can be identified is by using their position on the screen, but this can be unreliable. To overcome this problem, UiPath Studio uses what we call selectors. These store the attributes of a graphical user interface element and its parents, in the shape of an XML fragment.
Selectors are mechanisms that assist in identifying and selecting an element from an application with a graphical user interface (GUI). These elements can be windows, combination boxes, push buttons, among others. Elements can also be called controls.
StateListDrawable states = new StateListDrawable();
int yourBackgroundColor = Color.parseColor("#FFFFFF");
// Add specific color when your view has state 'pressed'
states.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(yourBackgroundColor));
// Add other states wanted and associated drawable
// ...
// As StateListDrawable extend Drawable, you can use it as background for exemple
yourView.setBackground(states);
You can add states as many as you want into your StateListDrawable (List of states available: http://developer.android.com/guide/topics/resources/color-list-resource.html). For each states combination you can set specific and dynamic drawable.
You can specify multiple states to match for a drawable
states.addState(new int[] { -android.R.attr.state_focused,
android.R.attr.state_selected,
-android.R.attr.state_pressed}, ColorDrawable(yourBackgroundColor));
This time the color will be applied if your view is not focused, is selected and is not pressed.
StateListDrawable states = new StateListDrawable();
int yourBackgroundColor = Color.parseColor("#FFFFFF");
// Add specific color when your view has state 'pressed'
states.addState(new int[] {android.R.attr.state_pressed},
new ColorDrawable(yourBackgroundColor));
// Add other states wanted and associated drawable
// ...
// As StateListDrawable extend Drawable, you can use it as background for exemple
yourView.setBackground(states);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With