Is it possible to set constraint layout properties in a style? - android

When I set the below constraint layout properties within the activity's xml source I get the expected outcome, but when I set them within a style, the set values don't get processed at all.
<style name="vrm_entry_number_button" parent="#android:style/Widget.Button">
<item name="android:layout_margin">7dp</item>
<item name="android:background">#496587</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="app:layout_constraintHeight_default">percent</item>
<item name="app:layout_constraintHeight_percent">0.90</item>
<item name="app:layout_constraintWidth_default">percent</item>
<item name="app:layout_constraintWidth_percent">0.10</item>
</style>
What could this be down to and is there an alternative?

Do as below and it should work.
<style name="vrm_entry_number_button" parent="#android:style/Widget.Button">
<item name="layout_constraintHeight_default">percent</item>
<item name="layout_constraintHeight_percent">0.90</item>
<item name="layout_constraintWidth_default">percent</item>
<item name="layout_constraintWidth_percent">0.10</item>
</style>

Related

Android font is not applied for button via style

I created style for Button
<style name="MainButtonStyle">
<item name="android:background">#drawable/btn_main_selector</item>
<item name="android:textColor">#color/btn_main_text_color_selector</item>
<item name="android:minHeight">40dp</item>
<item name="android:textSize">18sp</item>
<item name="android:gravity">center</item>
<item name="android:textAppearance">#font/bold</item>
</style>
This style applies in the AppTheme
<item name="android:buttonStyle">#style/MainButtonStyle</item>
bold.ttf file is in res/font folder
If I run an app I still see the default font. Where is the catch?
textAppearance allows you to define text-specific styling: font family, font color, size, etc. It is not for referencing font resource.
Just use the fontFamily attribute to set the font in xml:
<style name="MainButtonStyle">
...
<item name="fontFamily">#font/bold</item>
</style>
or
<style name="MainButtonTextAppearance">
<item name="android:textColor">#color/btn_main_text_color_selector</item>
<item name="android:textSize">18sp</item>
<item name="fontFamily">#font/bold</item>
</style>
<style name="MainButtonStyle">
<item name="android:background">#drawable/btn_main_selector</item>
<item name="android:minHeight">40dp</item>
<item name="android:gravity">center</item>
<item name="android:textAppearance">#Style/MainButtonTextAppearance</item>
</style>
make your button style inherit from parent Button style like
<style name="MainButtonStyle" parent="Widget.AppCompat.Button">
Try this :
<style name="MainButtonStyle">
<item name="android:background">#drawable/btn_main_selector</item>
<item name="android:textColor">#color/btn_main_text_color_selector</item>
<item name="android:minHeight">40dp</item>
<item name="android:textSize">18sp</item>
<item name="android:gravity">center</item>
<item name="fontFamily">#font/bold</item>
</style>

How to set text and/or background color of Cut Copy Paste

I am using a custom Dark Theme in my app. Everything is doing okay, except for the Cut Copy Paste dialog that appears as a solid black square.
Surely there is a style that determines that, but I can't find it, or an answer that addresses this directly. Min API is 16.
<style name="DarkTheme" parent="AppTheme.NoActionBar">
<item name="colorPrimary">#color/blackBackground</item>
<item name="colorPrimaryDark">#color/blackBackground</item>
<item name="colorAccent">#color/yellow</item>
<item name="android:textColor">#color/whiteText</item>
<item name="android:background">#color/blackBackground</item>
<item name="buttonStyle">#style/darkButtonStyle</item>
<item name="spinnerStyle">#style/darkSpinnerStyle</item>
</style>
<style name="darkButtonStyle" parent="#android:style/Widget.Button">
<item name="android:layout_width">fill_parent</item>
<item name="android:textColor">#color/whiteText</item>
<item name="android:textSize">16sp</item>
<item name="android:padding">10dp</item>
<item name="android:textStyle">bold</item>
<item name="android:background">#color/darkBackground</item>
<item name="android:gravity">center</item>
<item name="android:textAllCaps">true</item>
</style>
<style name="darkSpinnerStyle" parent="Widget.AppCompat.Spinner">
<item name="android:background">#color/blackBackground</item>
<item name="android:paddingTop">0dp</item>
<item name="android:layout_marginStart">1dp</item>
<item name="android:layout_marginLeft">1dp</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
</style>
I was having the same issue when regarding to MaterialAlertDialog. I was able to fix it using backgroundTint instead of background in styles. This is how:
Before
<style name="materialAlertDialog" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="android:background">#color/colorPrimaryDark</item>
<item name="materialAlertDialogTitleTextStyle">#style/TitleTextStyle</item>
<item name="materialAlertDialogBodyTextStyle">#style/BodyTextStyle</item>
<item name="buttonBarPositiveButtonStyle">#style/PositiveButtonStyle</item>
<item name="buttonBarNegativeButtonStyle">#style/NegativeButtonStyle</item>
</style>
This will be enough to repropduce the error that you are saying... So what i did was changing background for backgroundTint...
After
<style name="materialAlertDialog" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="android:backgroundTint">#color/colorPrimaryDark</item>
<item name="materialAlertDialogTitleTextStyle">#style/TitleTextStyle</item>
<item name="materialAlertDialogBodyTextStyle">#style/BodyTextStyle</item>
<item name="buttonBarPositiveButtonStyle">#style/PositiveButtonStyle</item>
<item name="buttonBarNegativeButtonStyle">#style/NegativeButtonStyle</item>
</style>
It seems like when you set a background and the dialog is created, the toolbar of copy/paste menu was changing his background in some weird way that i cant explain.
So this is not the exact answer for your problem but it may help you.
Note: Try removing background attr of your style. I have a dark theme and there is no need to use it. Just simple use <style name="AppTheme" parent="Theme.MaterialComponents.DayNight"> instead of <style name="DarkTheme" parent="AppTheme.NoActionBar">.

Android white text in search box

See attached
I am using a searchbar with the theme below (I know very little about Android themes, yet)
How do I make the text typed, in this case, "Hi Mom" white?
<style name="_Credential" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:editTextBackground">#drawable/credential_edit_text_holo_light</item>
<item name="android:textColorHighlight">#99005984</item>
<item name="android:textSelectHandleLeft">#drawable/credential_text_select_handle_left</item>
<item name="android:textSelectHandleRight">#drawable/credential_text_select_handle_right</item>
<item name="android:textSelectHandle">#drawable/credential_text_select_handle_middle</item>
<item name="android:autoCompleteTextViewStyle">#style/AutoCompleteTextViewCredential</item>
<item name="android:listChoiceIndicatorMultiple">#drawable/credential_btn_check_holo_light</item>
<item name="android:listChoiceIndicatorSingle">#drawable/credential_btn_radio_holo_light</item>
<item name="android:buttonStyle">#style/ButtonCredential</item>
<item name="android:imageButtonStyle">#style/ImageButtonCredential</item>
<item name="android:dropDownSpinnerStyle">#style/SpinnerCredential</item>
<item name="android:progressBarStyleHorizontal">#style/ProgressBarCredential</item>
<item name="android:seekBarStyle">#style/SeekBarCredential</item>
<item name="android:ratingBarStyle">#style/RatingBarCredential</item>
<item name="android:ratingBarStyleIndicator">#style/RatingBarBigCredential</item>
<item name="android:ratingBarStyleSmall">#style/RatingBarSmallCredential</item>
<item name="android:buttonStyleToggle">#style/ToggleCredential</item>
<item name="android:listChoiceBackgroundIndicator">#drawable/credential_list_selector_holo_light</item>
<item name="android:activatedBackgroundIndicator">#drawable/credential_activated_background_holo_light</item>
<item name="android:fastScrollThumbDrawable">#drawable/credential_fastscroll_thumb_holo</item>
</style>
<style name="_Credential" parent="android:Theme.Holo.Light.DarkActionBar">
...
<item name="android:editTextColor">#ffffff</item> <!--Allow to change the editText color-->
...
</style>
So you can't actually change the TextColor of something like a search box with android:textColor. Instead, you need to use the whole family of the textColor... attributes.
Create a custom style that has your main style as it's parent, and then change all three kinds of colors to be what you want. So, something like this:
<style name="master" paret="#android:Theme.Holo.Light.DarkActionBar">
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:textColorSecondary">#FFFFFF</item>
<item name="android:textColorTertiary">#FFFFFF</item>
</style>
Read more about this here.

How to inherit system defined style in my style file in android?

I customize a style named MyDialogWindowTitle in my style file, I hope this style inherited from system style Widget.TextView.ListSeparator,
butthe code parent="#style/Widget.TextView.ListSeparator" cause an error, how can I do ? Thanks!
<style name="MyDialogWindowTitle" parent="?android: style/Widget.TextView.ListSeparator">
<item name="android:textSize">30sp</item>
</style>
<style name="Widget.TextView.ListSeparator">
<item name="android:background">#android:drawable/dark_header_dither</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">25dip</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">?textColorSecondary</item>
<item name="android:textSize">14sp</item>
<item name="android:gravity">center_vertical</item>
<item name="android:paddingLeft">5sp</item>
</style>
Instead of parent="?android: style/Widget.TextView.ListSeparator", use parent="#style/Widget.TextView.ListSeparator"
This is because Widget.TextView.ListSeparator is defined by you and is not defined in android's libraries

android: format textview

is it possible to format a textview for a widget so that it looks like the text below the apps.
like in this screenshot:
i am looking for the exact textcolor, the exact dropshadow and the rounded background.
When in doubt, check with the source, which shows that Android is using a custom TextView to implement the bubbled background around the text.
It appears that the text itself is styled using styles in the launcher app:
<style name="WorkspaceIcon">
<item name="android:textSize">13dip</item>
<item name="android:singleLine">true</item>
<item name="android:ellipsize">marquee</item>
<item name="android:shadowColor">#FF000000</item>
<item name="android:shadowRadius">2.0</item>
<item name="android:textColor">#FFF</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">#drawable/shortcut_selector</item>
<item name="android:paddingLeft">5dip</item>
<item name="android:paddingRight">5dip</item>
</style>
<style name="WorkspaceIcon.Portrait">
<item name="android:drawablePadding">5dip</item>
<item name="android:paddingTop">4dip</item>
<item name="android:layout_marginLeft">3dip</item>
<item name="android:layout_marginRight">3dip</item>
<item name="android:layout_marginTop">13dip</item>
<item name="android:layout_marginBottom">8dip</item>
</style>
<style name="WorkspaceIcon.Landscape">
<item name="android:drawablePadding">3dip</item>
<item name="android:paddingTop">2dip</item>
<item name="android:layout_marginLeft">10dip</item>
<item name="android:layout_marginRight">10dip</item>
</style>
Those styles are called from the launcher's layouts as appropriate.

Categories

Resources