set shape background to transparent in android - android

I have a shape drawable that I want to use as a background. I want the shape to be transparent. But so far it's not. How do I do that? Here is what I have:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle" >
<solid android:color="#80000000" />
<stroke
android:width="1dip"
android:color="#000000" />
<corners android:radius="10dp" />
</shape>
I expected the line <solid android:color="#80000000" /> to do the trick.
EDIT:
In manifest, I set android:theme="#android:style/Theme.Dialog". Could that be the cause of the problem? I am basically trying to get this view on top of another. Changing to 00 or FF or whatever else does not work.

if you want set shape background to transparent you need to set this color
<solid android:color="#00000000" />

for creating a color including an opacity effect, you can create a color
with taking the alpha channel into account.
<resources>
<color name="translucent_grey">#88cccccc</color>
</resources>
a quote from another User about the color formats:
When defining the color of a view in android, the format can be either #RRGGBB or #AARRGGBB, where AA is the hex alpha value. FF would be fully opaque and 00 would be full transparent.
more information about this technique can be found in this thread:
How to Set Opacity (Alpha) for View in Android
Regards,
Jim

You can use this :
<solid
android:color="#android:color/transparent"/>
This is working for me.

I found the answer. Direct quote:
The easiest way that I have found is to set the activity's theme in the AndroidManifest to android:theme="#android:style/Theme.Holo.Dialog" then in the activity's onCreate method call getWindow().setBackgroundDrawable(new ColorDrawable(0));
from #DrewLeonce in Android: how to create a transparent dialog-themed activity

Related

How to make transparent glass color background

I'm trying to make a Layout button like the one in this photo with a transparent glassy color.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#color/glassColor"/>
<stroke android:width="1dp"
android:color="#color/colorWhite"/>
</shape>
I have the drawable, but I can't figure out how to create a hex color like the one in the picture
I am not sure this is the answer you are looking for but if you create a new color value #color/ you can access the built in color pane to set the color transparency.
I am sure you know this by now and surely my answer is not what you have expected.
<color name="colortransparent">#4F784A06</color>

Android scrollindicators style / color android

android:scrollIndicators="top|bottom"
does provide scroll indicators, but they are barely visible at all.
Screenshot of barely visible Scrollindicators
What theme/style color are they using, or how can I assign a custom color?
You can customize the scroll bar by changing its width and setting a custom shape.
Add following tags in your scroll view
android:fadeScrollbars="false"
android:scrollbarStyle="insideInset" // set as required..
android:scrollbarTrackVertical="#drawable/vertical_scrollview_track"
android:scrollbarSize="20dp"// set as required width..
Create following drawable in your drawable folder
vertical_scrollview_track.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#E2E0EB" />
<stroke
android:width="1dp"
android:color="#b3a9a9" />
<size android:width="15dp" />
<corners android:radius="15dp" />
</shape>
change colour as required.
<style>
<item name="android:colorForeground">#FFF</item>
</style>
As with SwitchCompat's track, a low opacity / high transparency version of colorForeground is used. Setting it to full white (or black on light backgrounds) makes the scrollindicators at least a bit more visible before someone finds the real solution.

How to access drawable resources (color) in java

I want to access color resource defined as drawable resource and desire to toggle the background color in JAVA, basically background of a button was changed using below mentioned drawable XML. I tried accessing button and modify color attribut but this changed the shape of button to normal square shape. I want to keep shape as defined in drawable XML and change background color manually.
<?xml version="1.0" encoding="UTF-8"?>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#EAEAEA" />
<corners android:bottomLeftRadius="8dip"
android:bottomRightRadius="1dip"
android:topLeftRadius="1dip"
android:topRightRadius="8dip" />
</shape>
</item>
<item><shape android:shape="rectangle">
<solid android:color="#EAEA00" />
<corners android:bottomLeftRadius="8dip"
android:bottomRightRadius="1dip"
android:topLeftRadius="1dip"
android:topRightRadius="8dip" />
</shape>
</item>
You have 2 possibilities:
myButton.setBackgroundColor(Color.CHOOSE_ONE);
myButton.setBackgroundResource(R.color.youCustomColor);
If you want to set the color from an hexadecimal value just use the static method of the Color class:
myButton.setBackgroundColor(Color.parseColor("#RRGGBB"));
//http://developer.android.com/reference/android/graphics/Color.html#parseColor%28java.lang.String%29
You can use following code to change the color of button -
button.setBackgroundColor(Color.rgb(red, green, blue));
and get rgb values from below link -
http://www.ceveni.com/2009/08/set-rgb-color-codes-for-android-and-rgb.html
If you are using a Resource Color You should probably resolve it with getResources().getColor(R.color.example_color)
For this option, your code would be the following:
myButton.setBackgroundResource(getResources().getColor(R.color.example_color));

Not able to use colors other than white or black in stroke object

I am adding a boundary for my layout but its not allowing me define the color other than white or black. Weird! This is a code snippet of boundary.xml in resource folder.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke
android:width="2dip"
android:color="#android:color/white" />
</shape>
You can define your own colors in colors.xml, and then use them in your drawable as #color/mycolor
You can also use directly color codes for the android:color attribute, like #F00, #4F00 (contains alpha channel), #FF0000 or #44FF0000 (again, has alpha channel)
try hex value for color
android:color="#FF00FF00"
use your custom colors, first stored in colors.xml file in values and then get those values for usage..
or set like this
android:color="#FF0000"

How to Set Opacity (Alpha) for View in Android

I have a button as in the following:
<Button
android:text="Submit"
android:id="#+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
In my onCreate() event, I am calling Button01 like this:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
There is a background in the application, and I want to set an opacity on this submit button. How can I set an opacity for this view? Is it something that I can set on the java side, or can I set in the main.xml file?
On the java side I tried Button01.mutate().SetAlpha(100), but it gave me an error.
I'm amazed by everyone else's MUCH more complicated answers.
XML
You can very simply define the alpha in the color definition of the button (or any other view) in your xml:
android:color="#66FF0000" // Partially transparent red
In the above example, the color would be a partially transparent red.
When defining the color of a view, the format can be either #RRGGBB or #AARRGGBB, where AA is the hex alpha value. FF would be fully opaque and 00 would be full transparent.
Dynamically
If you need to dynamically alter the opacity in your code, use
myButton.getBackground().setAlpha(128); // 50% transparent
Where the INT ranges from 0 (fully transparent) to 255 (fully opaque).
I guess you may have already found the answer, but if not (and for other developers), you can do it like this:
btnMybutton.getBackground().setAlpha(45);
Here I have set the opacity to 45. You can basically set it from anything between 0(fully transparent) to 255 (completely opaque)
Much more easier from the above.
Default alpha attribute is there for button
android:alpha="0.5"
The range is between 0 for complete transparent and 1 for complete opacity.
What I would suggest you do is create a custom ARGB color in your colors.xml file such as :
<resources>
<color name="translucent_black">#80000000</color>
</resources>
then set your button background to that color :
android:background="#android:color/translucent_black"
Another thing you can do if you want to play around with the shape of the button is to create a Shape drawable resource where you set up the properties what the button should look like :
file: res/drawable/rounded_corner_box.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#80000000"
android:endColor="#80FFFFFF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
Then use that as the button background :
android:background="#drawable/rounded_corner_box"
I just found your question while having the similar problem with a TextView. I was able to solve it, by extending TextView and overriding onSetAlpha. Maybe you could try something similar with your button:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
public class AlphaTextView extends TextView {
public AlphaTextView(Context context) {
super(context);
}
public AlphaTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AlphaTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
#Override
public boolean onSetAlpha(int alpha) {
setTextColor(getTextColors().withAlpha(alpha));
setHintTextColor(getHintTextColors().withAlpha(alpha));
setLinkTextColor(getLinkTextColors().withAlpha(alpha));
return true;
}
}
According to the android docs view alpha is a value between 0 and 1. So to set it use something like this:
View v;
v.setAlpha(.5f);
android:background="#android:color/transparent"
The above is something that I know...
I think creating a custom button class is the best idea
API Level 11
Recently I came across this android:alpha xml attribute which takes a value between 0 and 1. The corresponding method is setAlpha(float).
Although btnMybutton.getBackground().setAlpha(45); is nice idea, it just apply alpha to background and not the whole view.
If you want apply alpha to view use btnMybutton.setAlpha(0.30f); instead. This apply opacity to View. It accepts a value between 0 and 1.
Doc says:
Sets the opacity of the view. This is a value from 0 to 1, where 0
means the view is completely transparent and 1 means the view is
completely opaque. If this view overrides onSetAlpha(int) to return
true, then this view is responsible for applying the opacity itself.
Otherwise, calling this method is equivalent to calling
setLayerType(int, android.graphics.Paint) and setting a hardware
layer. Note that setting alpha to a translucent value (0 < alpha < 1)
may have performance implications. It is generally best to use the
alpha property sparingly and transiently, as in the case of fading
animations.
For a view you can set opacity by the following.
view_name.setAlpha(float_value);
The property view.setAlpha(int) is deprecated for the API version greater than 11. Henceforth, property like .setAlpha(0.5f) is used.
I've run into this problem with ICS/JB because the default buttons for the Holo theme consist of images that are slightly transparent. For a background this is especially noticeable.
Gingerbread vs. ICS+:
Copying over all of the drawable states and images for each resolution and making the transparent images solid is a pain, so I've opted for a dirtier solution: wrap the button in a holder that has a white background. Here's a crude XML drawable (ButtonHolder) which does exactly that:
Your XML file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="#style/Content">
<RelativeLayout style="#style/ButtonHolder">
<Button android:id="#+id/myButton"
style="#style/Button"
android:text="#string/proceed"/>
</RelativeLayout>
</LinearLayout>
ButtonHolder.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#color/white"/>
</shape>
</item>
</layer-list>
styles.xml
.
.
.
<style name="ButtonHolder">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:background">#drawable/buttonholder</item>
</style>
<style name="Button" parent="#android:style/Widget.Button">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
.
.
.
However, this results in a white border because the Holo button images include margins to account for the pressed space:
So the solution is to give the white background a margin (4dp worked for me) and rounded corners (2dp) to completely hide the white yet make the button solid:
ButtonHolder.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#android:color/transparent"/>
</shape>
</item>
<item android:top="4dp" android:bottom="4dp" android:left="4dp" android:right="4dp">
<shape android:shape="rectangle">
<solid android:color="#color/white"/>
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
The final result looks like this:
You should target this style for v14+, and tweak or exclude it for Gingerbread/Honeycomb because their native button image sizes are different from ICS and JB's (e.g. this exact style behind a Gingerbread button results in a small bit of white below the button).
For API < 11 for textView color I did the following:
int textViewColor = textView.getTextColors().getDefaultColor();
textView.setTextColor(Color.argb(128, Color.red(textViewColor), Color.green(textViewColor), Color.blue(textViewColor))); //50% transparent
A little cumbersome, but hey, it works :-)
If you use Kotlin , it's very easy to set alpha like this
imageView.alpha= 0.5F
where the value must be a float number.
I know this already has a bunch of answers but I found that for buttons it is just easiest to create your own .xml selectors and set that to the background of said button. That way you can also change it state when pressed or enabled and so on. Here is a quick snippet of one that I use. If you want to add a transparency to any of the colors, add a leading hex value (#XXcccccc). (XX == "alpha of color")
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#70c656" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#70c656"
android:endColor="#53933f"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>

Categories

Resources