Android :: Changing 9 Patch Background On List Item In Runtime Doesn't Always Redraw
Jun 1, 2009
I have a ListView containing a few different type of items, all having their own background image and font color. In my first implementation I implemented each type of item as its own layout with the background image etc defined in XML (and implemented Adapter.getView() so that it only reuses convertView if it's of the correct type). This works fine but the performance is not that great while scrolling since I'm inflating quite a few Views due to convertView mismatches, so instead I tried using the same layout for all items (to benefit fully from convertView reuse) and changing the background image and font size in runtime. I even keep the three background Drawables I need as members to save time decoding them from a resource for each item, and call View.setBackgroundDrawable() from Adapter.getView(). The problem is, sometimes the 9-patch is not correctly wrapped around the content of the list item when using this approach. While scrolling it usually looks correct but when the scrolling stops, or sometimes when I just tap anywhere on the list, the background 9-patch of some large items starts flickering and is either cropped or resized to its original PNG size rather than stretched to wrap the content.
First of all, I suspect this is a bug? Any ideas why this happens? Could it be that the View is not always measured to reflect the changed content when the 9-patch is applied? I have tried adding an extra call to View.invalidate() but it doesn't solve the problem. Second, does this approach sound reasonable at all, or how should I go about to optimize this scenario?
View 4 Replies
Mar 10, 2010
I have a background color applied to a ListView but everytime the list is scrolled the background color changes back to the system default (black). When the scrolling stops the color goes back to @color/window_background.The style is applied in AndroidManifest.xml:<activity android:name=".event.EventList" android:theme="@style/CKButtons"></activity> and my ListView looks like this: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
><ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/android:list"/>
<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/eventlist_no_items"/>
</LinearLayout>How can I prevent this from happening?
View 2 Replies
View Related
Apr 17, 2009
Im trying to change background color when an item is selected. Something like using a color selector, but actually it crashes. I've created a list_selector.xml inside /res/color/.<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_focused="true" android:color ="@ color/ plain_yellow"/><item android:state_pressed="true" android:state_enabled="false" android:color ="@color /plain _yellow" /><item android:state_enabled="false" android:color="@color/ plain_yellow" /><item android: state_active="true" android:color="@color/ plain_yellow" /><item android:color="@android: color/ transparent" /></selector> plain_yellow is a color i've defined in /res/values. I've tried to assign that selector programatically and using the xml, but the app crashes. Am i doing something wrong?
View 2 Replies
View Related
Apr 16, 2010
I am trying to overwrite the default backgroud color of List item which is holding the focus in the ListView. As you can see, in Android Setting Menu, when you scroll through the ListView, the focused ListItem has a red backgroud to highlight its focus. Does any way to change the default behavior by highlighting it with other color or just a bottom red line under this Item.
View 5 Replies
View Related
Jul 21, 2010
can anyone help me of changing the background color of a list view?. i am new to android and i really need to know this.
View 2 Replies
View Related
Jan 28, 2010
This is my first app so finding my way around bit by bit and have been experimenting a little and would like to change the background colour to a colour from a list.Currently it loads a white background specified in strings.xml <color name="all_white">#FFFFFF</color> This is used in main.xml:android: background=" @color/all _white"Ideally I would like to change the colour in OnCreate() to a colour of my choice. I have tried setBackground Drawable but it doesnt seem to work?This is my code:public class TestActivity extends Activity double dimValPercent = 100; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super. onCreate (savedInstance State); setContentView(R.layout.main); SetDimLevel(dimValPercent);SetBackground(); return;}public void SetBackground(){getWindow().setBackgroundDrawable( new ColorDrawable (color.all_blue) );
View 1 Replies
View Related
Oct 17, 2010
Trying to implement simple dictionary. I want to make it so while the user is typing in the EditText box the list to scroll automatically to the best match. I don't want it to filter the list. For example if the user types "s" in the EditText I want the first word that s/he sees under the EditText box to be the first word in the dictionary that starts with "s." But the user should still be able to slide up and down and to be able to see the entire list of words. It is basically like a go to functionality. I used ArrayList to store my list of words. The data is in res/raw/data.xml file. Here is my onCreate method
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wordListView = (ListView)findViewById(R.id.wordList);
myEditText = (EditText)findViewById(R.id.myEditText);
words = new ArrayList<Word>();
arrAdap = new ArrayAdapter<Word>(this, android.R.layout.simple_list_item_1, words);
wordListView.setAdapter(arrAdap); try {
InputStream inSource = getResources().openRawResource(R.raw.data);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(inSource, null);
NodeList wordsList = doc.getElementsByTagName("eng-bg");
int length = wordsList.getLength();
for(int i = 0; i<length; i++) {
Element entry = (Element)wordsList.item(i);
Element eng = (Element)entry.getElementsByTagName("english").item(0);
Element bul = (Element)entry.getElementsByTagName("bulgarian").item(0);
Element id = (Element)entry.getElementsByTagName("ID").item(0);
String english = eng.getFirstChild().getNodeValue();
String bulgarian = bul.getFirstChild().getNodeValue();
int wordId = Integer.parseInt(id.getFirstChild().getNodeValue());
Word word = new Word(bulgarian, english, wordId);
addNewWord(word);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}wordListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
selectedWord = words.get(pos);
showDialog(TRANS_DIALOG);
myEditText.setText(selectedWord.getEnglish());
myEditText.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence s, int start, int before, int count) {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
View 1 Replies
View Related
Apr 9, 2010
I don't know exactly how to explain this problem, but I'll try. I have a ListView with several items. Each item has inside a TextView and two ImageView. I want the ImageView change when I click on them, and I want to open a context menu when I press for a long time into the ListView item.For the ImageView, everything works properly. For the whole item, I can show the context menu after a long press, but my problem is that the ImageView changes as well when I am pressing the TextView, for example.I hope you understand my problem. I think that all the children of a view are affected by an event in the parent, but I am not sure.
View 2 Replies
View Related
Nov 20, 2010
I jave a list of item (linearlayout inside a scrollview where i add buttons vertically to linearlayout dynamically from the java code)i need when i click on one button the item moves up (scroll up) , to make the item at the first of the screen
View 1 Replies
View Related
Oct 11, 2010
I encountered this problem when updating my background to use a 9-patch image. The layout is fine on different screens using different sizes of the same image, but when I change the image to be a 9-patch it breaks the entire layout mysteriously.
View 1 Replies
View Related
Feb 15, 2010
i have list views with image views and text views etc in them, and i'm trying to fix up a situation where the background image of a list element changes in the "pressed" state. if there's a straightforward way of doing that, please let me know! right now, i override onTouchEvent() in the topmost view, and also in those child views who don't just delegate to their parents which would be image views. i have to check for long clicks myself, but basically this scheme works. the list views are potentially different sizes depending on how much text is in the views etc, so i thought i would use a 9-patch as the background. however, when the background changes from flat white to the 9-patch, this seems to indent the view a bit - ie give it margins. eh? if i change the image to a non-9-patch, the margins remain as they are. i've tried different sizes of 9-patch, from 320x150 or so down to 100x30 etc, no change. what's going on?
View 3 Replies
View Related
Aug 21, 2010
As the title says, I cannot get padding around the text.Here's my xml:
<style name="StandardButton" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/nine_patch_3</item>
<item name="android:textColor">@color/white</item>
<item name="android:textStyle">bold</item>
<item name="android:paddingLeft">10dp</item>
<item name="android:paddingRight">10dp</item>
</style>
View 1 Replies
View Related
Sep 9, 2010
I have an application where I would like the users to be able to change the theme. Currently my layout have elements like this: <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background_transparency"> what I would like to do is to change to a new colors.xml that has a different value for "@color/background_transparency" if the user selects one of the themes available. Alternatively to be able to change the value of "@color/background_transparency" in code.Is this possible? Or am I doing this the wrong way.
View 3 Replies
View Related
Jun 3, 2010
I am using a LinearLayout to display some Text and image. I have the images at drawable/ and i am implimenting this with ListActivity with some onListItemClick functionality. now i wants to change the image for the rows which are processed by onclick functionality to show the status as processed. can some one help me in this issue to change the image at runtime.
The following is my implimentation.
CODE:.........
And main.xml is :
CODE:.........
I thought to add the field to DB. but i was unable to know how to change the image with code. can any one provide me an example for drawing image with code and change it based on a condition at runtime.
View 1 Replies
View Related
Nov 4, 2010
I am on my first Android application and I am on a timeline so details and examples will be useful since my knowledge is still minimal. I want my first screen to present the user with a list of activities to choose from. In my situation it is a recipe app where the user first chooses the type of food, such as, Beef, Chicken, or Pork. I want the application to launch an activity depending on the list item that the user clicked on. I am not sure if I should use a list view, a text view, a scroll view, a list activity, an activity group...
View 1 Replies
View Related
Nov 24, 2010
we are wroking on the displaying of mails from an email . we got the list of emails stored . we need to show a small text screen which consists of the some content of the body when the email in the list gets focus .
View 4 Replies
View Related
Apr 23, 2010
I'm trying to create a multiple selection list where the selection is represented graphically rather than with checkboxes.My list has checkboxes, but I want them to serve a different purpose. I'm using a cursor to hold my data and created a custom view binder for the SimpleCursorAdapter. I did this for the checkboxes and general flexibility.So far I haven't even been able to show one line as being selected. I've enabled multiple selection on the list and denied the children of the list item focusability. I've tried manually changing background color with the position fed in through the list item click listener. But the wrong items get changed and they don't even change to the right color. I've enabled touch focusability with no improvement either.Ideally, I'd like the trackball highlight focus bar to appear in multiple places. But I don't think this is possible unless you use the drawable directly. But I don't know how to find or apply it. My next idea was to have a slim view bar that changes color. But I had the same problem with the wrong item being selected so I never finished trying to guess the index position to see if this would work. My most recent idea is to completely swap out the view for another one if it's selected. But I have no idea how to do this either. I'm thinking of using an array list to store the _id s of the items that need a different view to get around the wierd selection problem. I'm also thinking of passing in the ID field as my from and the selection view as the to for my adapter. Then I'd intercept it with my binder and change the view accordingly. But once again, I'm not sure how to do this successfuly.
View 7 Replies
View Related
Aug 23, 2010
I use tabs in my Android application and one of my tabs contains a listview. I'm noticing some weird behavior when I override isEnabled in my list's adapter and then try to use the D-pad to move up and down through the list and to my tabs.If the 0th item of the list is enabled, then everything works as expected - I can move down through the list, and then up again and once I reach the top of the list, pressing up moves focus to my tab.However, if the 0th item is DISABLED (isEnabled in my adapter returns false), then when I press up while position 1 is focused, the focus gets stuck. It doesn't move up to the tab as I would have expected and instead stays on position 1 of the list.
View 1 Replies
View Related
Jul 14, 2010
By Default in the Listview,focus will come on the list item.Instead of that, can I get only the border to the list item?I can achieve this by using a transparent image as a list selector.Is there any other simplest way to achieve this requirement?
View 1 Replies
View Related
Aug 9, 2010
I have a card game I created in android and it is possible to show the scores at any given time by clicking a menu option. I would like that scores dialog to show a different background image when it's loaded depending on factors like who's leading, etc. In my constructor, I have the following relevant code:
public ScoresDialog(Context context) {
super(context);
this.setTitle(R.string.scoresDialogHeading);
setContentView(R.layout.scores_view);
...
}
I have tried getting that view to change it in the showDialog method i wrote like so: findViewById(R.layout.scores_view).setBackgroundColor(Color.BLUE); However, I got a NPE... I tried moving this statement to the onStart method, thinking that the view is not yet initialized but got the same error... Any thoughts on what the right way to do something like that is?
View 1 Replies
View Related
Jun 14, 2010
I am getting a run time exception
java.lang.RuntimeException: Your content must have a ListView whose id
attribute is 'android.R.id.list'
I don't know what is wrong> code...
View 1 Replies
View Related
Sep 26, 2010
I would like to change the background color of a ListView Item after it has been touched until a further event.
This is my code:
CODE:............
Changing the background color of view yields weird results.
View 1 Replies
View Related
Feb 16, 2010
CODE:.............
This is my current row. If I created a .JPEG, and I want that to be for each item...how would I change this .xml file? Where would I put the image? In Assets?
View 2 Replies
View Related
Jun 2, 2010
I got an app with tabs and a notification bar entry, when I send it to background (click on home button) and try to re-open the application via click on the notification bar, the app restarts (last selected tab is lost).
When I hold the home button if the application is in the background and select it from there or click the app's icon on the homescreen, the previous state is restored per default (the correct tab is selected)
IMO the intent of the notification is wrong, but I'm not sure how to fix it.
In short: How to get a background application back to foreground when I click the notification entry?
View 1 Replies
View Related
Apr 1, 2010
Is it possible to apply a custom background to each Listview item via the list selector?
The default selector specifies @android:color/transparent for the state_focused="false" case, but changing this to some custom drawable doesn't affect items that aren't selected. Romain Guy seems to suggest in this answer that this is possible.
I'm currently achieving the same affect by using a custom background on each view and hiding it when the item is selected/focused/whatever so the selector is shown, but it'd be more elegant to have this all defined in one place.
For reference, this is the selector I'm using to try and get this working:
CODE:...............
And this is how I'm setting the selector:
CODE:.........................
View 3 Replies
View Related
Nov 16, 2010
I have a List and ContextMenu for that List. Now when I long pressed on list then onCreateContextMenu method is invoked.Now I want to know on which list item I long pressed. I had tried but I got only got index. of that list item. How to get name of that list item?
View 2 Replies
View Related
Nov 20, 2009
Can any one tell me how can I highlight any item of my list when mouse cursor passes through that particular item. Is this possible to highlight any particular option/item using soft keys?
View 4 Replies
View Related
Feb 1, 2010
I'm trying to find out how I can create a pop-up menu bar, after I press on a checkbox item, so I can do multiple things like delete.If anyone know about any tutorial, or article it will be fully estimated!
View 1 Replies
View Related
Oct 7, 2010
Other than using listeners, is there any way by which i can get index of an item in the list?
View 2 Replies
View Related
Jun 8, 2010
I have this Code to Capture a image and Display it back in ListView onclick of the listitem i can capture image and save to image View, but how can get on the left of the list item?
View 3 Replies
View Related