anvil-ui / anvil

Minimal UI library for Android inspired by React
MIT License
1.45k stars 90 forks source link

Handwritten setters that might be useful #27

Open zserge opened 9 years ago

zserge commented 9 years ago

Currently Anvil contains lots of autogenerated bindings for all setters of all views in Android SDK, starting with "set" and having exactly one parameter (normally a value to set). Some setters are not covered - the ones that start with "add" (like addTextChangedListeer and the ones having more than a single parameter (like setLineSpacing).

As it was discussed previously in issue #15 - missing setters will be added if someone finds real need in them (most of them are really exotic), and makes a pull-request. The list of setters has been taken from the recent android.jar of API Level 23.

I suggest to split this in two phases:

corbt commented 9 years ago

I'd like to nominate setTypeface(Typeface,int) for manual implementation. It's the easiest way to style text in italics or underlined, and I use that in a few places.

I'm happy to put together a PR if that would be helpful.

zserge commented 9 years ago

Sure, a PR for such a function is more than welcome!

LukasVykuka commented 8 years ago

Hi, I just create PR https://github.com/zserge/anvil/pull/71 implementing setters for compound drawable for TextView (and so for many subclasses). But I have question: there are 3 more setters (setCompoundDrawablesRelative*) which was introduced in API 17. How to implement them if minimal API for BaseDSL is 15?

zserge commented 8 years ago

@LukasVykuka if I understand it correctly, you can just wrap actual methods with if (Build.VERSION.SDK_INT >= 17) ... so they won't be called on older API levels. On the other hand I'd prefer to keep BaseDSL small, so I wonder how these Relative variants are different from just setCompoundDrawable (sorry, I'm asking because the documentation looks identical).

LukasVykuka commented 8 years ago

Relative version place drawable dependently on direction of text of current Locale. Some languages are writen from right to left (https://en.wikipedia.org/wiki/Right-to-left) so if I set drawable to "start" position than it will be showed on left in normal language and on right in, e. g., in arabic language. Non-relative version place drawable absolute, independently on laguage.

I'm happy with this methods so far.

zserge commented 8 years ago

@LukasVykuka Ah, I see. I'd either leave it as it is now, or implemented via SDK_INT check so that on pre-17 devices it was calling setCompoundDrawable, but on newer devices would call a better alternative to respect the RTL languages (I believe that's what android:drawableLeft etc do in XML)

LukasVykuka commented 8 years ago

I think that there should be both versions (relative and non-relative) even for API >=17 because sometimes it will be appropriate to place drawable on some side independently on text direction.

But I agree, leave it as it is now :)

Oh btw is the best lib I have found in my 3 year Android developer life! Thank you :+1:

ElectricCookie commented 8 years ago

I'm missing "TextInputLayout.setPasswordVisibilityToggleEnabled(boolean enabled)" in the Design library. But so far I'm loving everything about anvil!