2011-11-28 6 views
5

Utilizzo la libreria di compatibilità Android e sto riscontrando alcuni problemi con listfragment che utilizzano uno sfondo non solido. Il problema è lo stesso descritto con on this link ma la chiamata a setCacheColorHint su this.listView() non ha alcun effetto. Qualcuno ha qualche idea su cosa sta succedendo?setCacheColorHint su listfragments

<fragment class="com.mypackage.MyFragment" 
android:id="@+id/my_fragment" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

e all'interno della classe frammento, che risulta essere un ListFragment, ho

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 

    getListView().setCacheColorHint(android.R.color.transparent); 
    super.onViewCreated(view, savedInstanceState); 
} 

Grazie,

+0

Potrebbe fornire qualche codice per favore? – Renaud

+0

Appena aggiunto lo snippet della chiamata onViewCreated – fedepaol

+2

Sto cercando di riprodurre il problema o aggirarlo ... Nel frattempo dovresti spostare la super chiamata per essere la prima cosa eseguita come discusso nel seguente post http: // StackOverflow. it/questions/7191109/difference-between-code-before-and-after-super – Renaud

risposta

9

È necessario aggiungere getListView().setCacheColorHint(Color.TRANSPARENT) in onActivityCreated metodo invece onViewCreated

+0

Questa è una risposta perfettamente funzionante. Perché non è stato accettato? – Bostone

+0

scusa @ DroidIn.net, non sapevo che dovevo accettare le risposte e non vengo spesso qui. Ad ogni modo, l'ho appena accettato. Molte grazie per averlo indicato. – fedepaol

+0

Non tutti tranne quelli giusti, forse? :) – Bostone

0

Ok, Credo trovato ho modo per farlo funzionare. Semplicemente lasciare che il frammento gonfiasse un layout personalizzato invece di usarne uno ha fatto il trucco.

Il layout personalizzato contiene solo il ListView.

ho allegare il layout e il metodo onCreateView qui, nel caso in cui essa può aiutare qualcun altro:

<?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:id="@android:id/list" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:listSelector="@android:color/transparent" 
       android:cacheColorHint="#00000000" > 
    </ListView> 
</LinearLayout> 

E ora:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
{ 
    View res = inflater.inflate(R.layout.generic_list_layout, container, false); 
    return res; 
} 
+0

grazie a @Hiral per il rientro del codice. Scusa se non l'ho fatto anch'io, sono piuttosto nuovo qui ... – fedepaol

+0

sempre ben accetto! :) – Hiral