How to add icon to spinner (where find the default value) - android

how i add icon to spinner by xml where find the default value (not in the the list) ??
<Spinner
android:id="#+id/spinner1"
android:layout_gravity="center"
android:layout_weight="0.28"
android:prompt="#string/language_prompt"
android:textSize="12sp" <!-- icon insten of text -->
/>
i try android:Background="#drawable/world_language_icon" but doesn't work.
i dont find src or set drawable .
I dont find here (in google)
i need xml and not javaalso here i find in java

First of all, you should probably try proof reading your question before posting, and make sure you know exactly what you want to know.
how i add icon to spinner by xml
The icon is not added to the spinner itself, as what you use to populate the Spinner is an adapter. In order to add an icon to your Spinner items, you would need to create a custom adapter to set to the Spinner, and use a custom layout for the List Items.
where find the defult value (not in the the list) ??
That, I'm not sure what you are asking for. If your question is how to set a default item/value for the Spinner, it's not possible. The default item set will always be the first item on the List you populate the Spinner with. You can of course automatically select a different Spinner item in code, but even then you'll notice that the first item was selected before your other actions.

Related

How to change the font size of only for one textview in a setting ( listview)?

I am creating a chatting app for a school project and I need to add a list of choices between three different font sizes in the SettingActivity, so you can switch between font sizes whenever you like. It only needs to affect the chat and thus not the whole app. I am lost from here.
Save the font size in shared prefrences when user goes to setting activity ,
In the chat listview use an adapter that will check the size prefrences when it initialize the list , than define the textviews in that size using this:
holder.textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,YOUR_NEW_SIZE);
Enjoy.
use the following XML files......
<com.mobsandgeeks.ui.TypefaceTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/hello_world"
geekui:customTypeface="fonts/custom_font.ttf" />

Android "custom" Spinner

What I need to achieve is a Spinner with these properties:
The Spinner allows the user to select from a fixed set of strings. Those strings are localized, so an English user has different choices than a French user.
When I try to retrieve the value of the selected item of the Spinner, I don't want it to return the localized value of that selected item, but rather the "non-localized" one (in my case, the English value of that string).
How could I achieve this kind of thing? Would a custom Adapter suffice? I've been stucking here for a while.
In your string.xml put
<string-array name="language">
<item>English</item>
<item>Franch</item>
</string-array>
In Your XML where you use spinner
<Spinner
android:id="#+id/language"
android:layout_width="60dp"
android:layout_height="30dp"
android:entries="#array/language"></Spinner>
and finally on java file
Spinner language1= (Spinner) findViewById(R.id.language);
language.getSelectedView().toString())
it work for me..
Ok, a custom Adapter was sufficient to do the trick. I've also defined a layout resource (for elements in the spinner) containing two TextViews: one with visibility="Visible" and one with visibility="Gone". The former holds the localized value, while the latter holds the english value.

How to set correct text size for a Spinner in an Android Toolbar action bar

I followed these instructions to add a spinner to my Toolbar which I am using as the action bar in my Android app.
However the text size is too small.
How do I get the correct text size for an action bar item?
For an example of the correct size see the Action Bar guide.
Try adding the below property to your spinner item, it worked for me :
android:textSize="?attr/actionBarSize"
Hope this helps..
Edit :
Okay, I wasn't telling you about toolbar, let me show an example which might help you :
I assumed in my answer that you have a custom layout defined for spinner, if not then have a look at below code :
Define spinnerLayout.xml file in your layout resource :
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/spinnerLayoutItems"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="?attr/actionBarSize"
android:textColor="#FF0000"
android:gravity="center"/>
Now, add this in your activity :
.....
Spinner spinner = (Spinner) findViewById(R.id.spinner); // Your spinner id in layout.
.....
ArrayAdapter<String> adapter = ArrayAdapter.createFromResource(this,
R.array.list,R.layout.spinnerLayoutItems);
spinner.setAdapter(adapter);
....
So, I was telling to set your textSize in spinner to "?attr/actionBarSize", you can set it anything, as big as you want.
I am sorry, I by mistake wrote in my previous answer : android:layout_height property, I have corrected it.
Hope this helps....
The accepted answer is wrong. Because ?attr/actionBarSize is 56dp!! Its HUGE for text. The right way to do it is set a style to the TextView as follows:
style="#style/ActionBarTitle"
If you are using AppCompat, you can also use this instead:
style="#style/Base.TextAppearance.Widget.AppCompat.Toolbar.Title"
Both achieve the same result. Styles in Android are repeated if you use support libraries.

spinner text color is white?

I use a Spinner inside a layout.
I use this code:
...
<Spinner
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="#+id/spin_prod_promo" />
...
Now, when I assign it's adapter I use this code:
...
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mcontext, android.R.layout.simple_spinner_item, mylabels);
// Drop down layout style
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner myspinner = (Spinner) V.findViewById(R.id.spin_prod_promo);
// attaching data adapter to spinner
myspinner.setAdapter(dataAdapter);
...
My problem is that, the text color of the spinner is white... thus unreadable, and I do not set it to be this way anywhere in the code.
The "funny thing" is that I use the exact same code in a different activity and the Spinner has the right colors.
The difference is that in this (BAD) case the spinner is located in a fragment.
So if the spinner is in an activity - colors are fine
If the spinner is located on a fragment - color is messed up
I tried using a custom layout for the items of the spinner, but all I succeeded was to make the spinner look disabled. Plus there is always an item in the dropdown that has the color of the background (it can only be seen if I click on it, then I can see the content as long as I keep the click on)
What is going on here?
How can I solve this problem?
Is there something I can do to set the colors of the spinner to be the colors of the theme?
All other widgets in the fragment have normal colors...
Thank you
Context mcontext = getActivity().getApplicationContext(); Is this wrong?
Yes, this is wrong. Only use getApplicationContext() when you know exactly why you are using getApplicationContext(). In particular, never use getApplicationContext() for inflating layouts, as it will screw things up by not using the right theme.
I would delete mcontext entirely, replacing it with getActivity() where needed in your fragment.
just try this..
String[]array={"A","B","C","D"};
ArrayAdapter<String> adapter=new ArrayAdapter<String> (**YourClassName.this**,android.R.layout.simple_list_item_checked,array);
listView.setAdapter(adapter);
NOTE YourClassName.this is your current class name.This code is working for me.
I found the solution. It is to declare a custom layout for the item of the Spinner and use it instead of the default one. And in the custom layout, I set the color of the TextView text to black.
It works this way.
So the code: (promospin_row.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:textColor="#000000"
android:id="#+id/tv_promo_txt"
android:paddingLeft="5dp"
android:paddingTop="5dp" />
</LinearLayout>
and the java code:
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mcontext, R.layout.promospin_row, R.id.tv_promo_txt, mylabels);
// Drop down layout style
dataAdapter.setDropDownViewResource(R.layout.promospin_row);
Spinner myspinner = (Spinner) V.findViewById(R.id.spin_prod_promo);
// attaching data adapter to spinner
myspinner.setAdapter(dataAdapter);
This way, the item text becomes black. And no other anomalies.
Thank you #CommonsWare for your time
Just use null instead of getApplicationContext().
It must work.
I have tried it and its working.
In your Application you can use null instead of mcontext
I was having this problem too. This is not a solution but a potential workaround for others to try in case the above solutions don't work.
Set the background color of the popup that appears when the spinner is selected to something that contrasts the white text color.
<Spinner
...
android:popupBackground="#color/layout_background"
... />
Here I have defined layout_background as a dark greyish color #565656 in a seperate file called colors.xml located in my src/main/java/res/values folder.
Another solution is to indeed use GetApplication() as the context instead of
getActivity().getApplicationContext();
This way I can use the default item layout without having to declare a new custom layout.
So I guess, CommonsWare was right afterall. It is the context that blew things up.
Please #Commonsware, make your comment an answer so I can accept it, because you deserve it.
EDIT
I was writing this while you wrote your answer, that is why it seems I didn't see your answer :)
Just use getBaseContext() instead of mcontext.
Worked for me. I set the adapter of spinner inside onItemClick function of AutoCompleteTextView and had the same problem of text color until I used getBaseContext(). Hope this answer helps.

Changing background color for items of Spinner

I am working on Android application.I am using Spinner control and added items to it.
Is there a way to change the background color of items in spinner.
can any one help me in sorting out this issue.
Thanks in Advance,
If you completely want to customize your background spinner, you should use 9patch background.
Here is a tutorial that explain how to do that :
http://www.gersic.com/blog.php?id=57
Otherwise, the solution given by user432209 is the simplest.
However, if you want to do that in xml layout :
<Spinner android:id="#+id/spinner"
...
android:background="#YOUR_HEXA_COLOR"/>
You can use
yourView.setBackgroundColor(int color)
You can also use android:popupBackground="YOUR COLOR" which will define the items background not the whole spinner's background.

Categories

Resources