I'm using two toggle buttons on my application, when I run it on the emulator the button has black text, and a light gray background. As we can see in the next image:
When I run it on my real device the button has another style, it has white text, and a black background. As shown in the next image.
My QUESTION IS: How to change the style of a ToggleButton to it always stay with a clear gray background, as in the first image? Is it defined by a Theme?
The xml code used for the button was:
<ToggleButton
android:id="#+id/toggleButtonSimulado"
android:layout_gravity="center|top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="On"
android:textOff="Off" />
Style of the button or any other view changes in the real device according to the current theme selected on that device. To prevent this you need to specify background color and text color explicitly. Use a gradient as the background of the button. For example:
<ToggleButton
android:id="#+id/toggleButtonSimulado"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#drawable/gray_gradient"
android:textOn="On"
android:textOff="Off"
android:textColor="#android:color/black" />
You can use your own backgrounds for the buttons.
Search btn_toggle_off.9.png/btn_toggle_on.9 on your sdk install dir(android-sdk-mac_86/platforms/android-9/data/res/drawable-hdpi).
And make sure to copy the selector located on drawable folder
Or you can try:
androiddrawables
androiddrawablesexplorer
Hope this help.
Related
Hi guys im new in android stuff and i have a problem with a button when color change, because when it changes the button grows a bit and i dont know why. My code of the button click is below.
produzirbt.setBackgroundColor(Color.rgb(38, 198, 219));
Toast.makeText(getApplicationContext(), "Avaria iniciada.", Toast.LENGTH_SHORT).show();
Xml
<Button
android:layout_width="150dp"
android:layout_height="100dp"
android:text="Pausa"
android:id="#+id/Pausa"
android:textSize="50px"
style="#style/Widget.AppCompat.Button.Colored"
android:layout_above="#+id/Avaria"
android:layout_toRightOf="#+id/terminaliniciado"
android:layout_toEndOf="#+id/terminaliniciado" />
In order to keep button size use setColorFilter() method.
In your case:
produzirbt.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.your_color), PorterDuff.Mode.SRC_ATOP);
Your button by default has a backgrond definded by some xml file. It contains backround color, corner radiuses and padding. Then in java code you change this style to plain color and padding becomes zero. To prevent size changing you should define base background with a color. Like this:
<Button
android:layout_width="150dp"
android:layout_height="100dp"
android:text="Pausa"
android:id="#+id/Pausa"
android:textSize="32sp"
android:background="#color/my_button_color"
android:layout_above="#+id/Avaria"
android:layout_toRightOf="#+id/terminaliniciado"
android:layout_toEndOf="#+id/terminaliniciado" />
A the same time using color for button is a hacky method. It'll be better to define normal style as the documentation says.
I'd like to have an image in a button with text and I've already have it. But the problem is that my image is with some " grey background colour" (as you can see below) that I would like to remove.
In a normal situation I would use android:background="#null" and it would solve it, but I'm using as background a template to my button.
<Button
android:drawableLeft="#drawable/profile_32"
android:layout_marginRight="25dp"
android:layout_marginBottom="10dp"
android:textColor="#color/yellow3"
android:background="#drawable/buttons2"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="#string/button_profile"
android:textSize="18dp"
android:textStyle="bold"
android:id="#+id/buttonProfile"
/>
Does anyone know any other way to remove that grey background color from the image? Thanks.
Is the grey actually part of the image? If not you could try background:"#android:color/transparent"
If the grey background is part of the profile_32 image, there is not an easy way to remove it in Android. You will need to have the image re-exported or use an image editing program to remove the background.
Yes, use an ImageButton and just add
android:background="#00000000"
or
android:background="#null"
to your Button.
The first 2 "0" is alpha, "00" = trasparent
I created a custom button and I saved it as a .png with a transparant background.
this is the code in xml
<Button
android:id="#+id/btnReport"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:drawableTop="#drawable/report" />
and when i run it in the emulator I get my button with a grey background
(I cannot post images yet, because my reputation is too low. Apologies for this)
How do I make the background transparant?
Thanks.
Vincent
You should be doing
android:background="#drawable/report"
is that image "report" only transparent? You donĀ“t need to set a transparent image, just set
android:background="#android:color/transparent"
to your button.
I have a button like so:
<Button
android:id="#+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#android:color/transparent"
android:text="Button"
android:textColor="#color/my_gray" />
After pressing the button, the text color turns a darker gray color (a "this has already been pressed" color). How do I prevent this? On the button press I do button.setTextColor(R.color.my_gray); to reset the color, but it has no effect.
Try using a different kind of button. CompoundButton or ImageButton might work out for you since you can control their backgrounds/images more easily.
However, the best way to do it might be to use a selector like this guide shows.
when I just use the normal default button in android, depending on what colour the background of the intent is the colour of the button changes slightly to the colour of the background. I want it so that the button is fully opaque (like when the intent has a white background), how do I do this? thanks.
[it might only do it in android 3.1]
the same button on different backgrounds
You can set the background for a button to any drawable. In XML, do it using the android:background attribute:
<Button
. . .
android:background="#drawable/my_button_bg"
. . .
/>
In code, use the setBackgroundResource method:
Button button = (Button) findViewById(R.id.my_button);
button.setBackgroundResource(R.drawable.my_button_bg);
Your background drawable can be a State List drawable, which you can use to change the background appearance when the button is pressed, has focus, etc.
<Button android:background="#android:color/transparent"
android:text="#+id/Button01"
android:id="#+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
By using android:background="#android:color/transparent" the button background will become transparent