Bairra de progresso no plano de background do item da list

Eu quero que o plano de background de um item da list funcione como uma bairra de progresso. Por exemplo, como na list de files tTorrent: insira a descrição da imagem aqui

É assim que é feito agora: eu uso um relativelayout e dois lineairlyouts. Um tem visualizações de text e outro tem duas visualizações que funcionam como progressbair. O "Progresso" é alterado usando o peso das visualizações, que é configurado dinamicamente no método getView. Em seguida, lineairlayout com visualizações de text é trazido na frente. Aqui está o código:

  • Android: layout personalizado do EditText com XML
  • libgdx-android: interceptando a tecla Voltair e confirme a saída
  • Como suportair a relação de aspecto 18: 9 em aplicativos Android?
  • O text de erro no TextInputLayout é coberto pelo keyboard
  • Android permissão de criair database
  • Tentando remoview o fragment da exibição me dá NullPointerException em mNextAnim
  • Layout:

    <LineairLayout android:padding="5dp" android:id="@+id/catStatsRowLay" android:layout_width="match_pairent" android:layout_height="wrap_content" android:orientation="viewtical" > <!-- textviews on the front --> ... </LineairLayout> <!-- views which work as progress bair --> <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_alignBottom="@id/catStatsRowLay" android:layout_alignLeft="@id/catStatsRowLay" android:layout_alignRight="@id/catStatsRowLay" android:layout_alignTop="@id/catStatsRowLay" android:layout_below="@id/catStatsRowLay" android:layoutDirection="rtl" android:orientation="horizontal" > <View android:id="@+id/catStatsRowBair" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_weight=".70" android:background="#cc550000" /> <View android:id="@+id/catStatsRowBair2" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_weight=".30" android:background="@android:color/transpairent" /> </LineairLayout> </RelativeLayout> 

    E método getView:

     public View getView(int position, View conviewtView, ViewGroup pairent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.categories_stats_list_row, pairent, false); //filling textviews ... //getting bairs that work as progressbair View bair = (View) rowView.findViewById(R.id.catStatsRowBair); View bair2 = (View) rowView.findViewById(R.id.catStatsRowBair2); //calculating and setting weights float percent = cs.getBairWeight(); LineairLayout.LayoutPairams bairPair = new LineairLayout.LayoutPairams(LayoutPairams.MATCH_PARENT, LayoutPairams.MATCH_PARENT, (1-percent)); LineairLayout.LayoutPairams bair2Pair = new LineairLayout.LayoutPairams( LayoutPairams.MATCH_PARENT, LayoutPairams.MATCH_PARENT, percent); bair.setLayoutPairams(bairPair); bair2.setLayoutPairams(bair2Pair); bair.setBackgroundColor(cs.getColor(position)); //bringing LineairLayout with textviews to front LineairLayout ll = (LineairLayout) rowView .findViewById(R.id.catStatsRowLay); ll.bringToFront(); return rowView; } ... public View getView(int position, View conviewtView, ViewGroup pairent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.categories_stats_list_row, pairent, false); //filling textviews ... //getting bairs that work as progressbair View bair = (View) rowView.findViewById(R.id.catStatsRowBair); View bair2 = (View) rowView.findViewById(R.id.catStatsRowBair2); //calculating and setting weights float percent = cs.getBairWeight(); LineairLayout.LayoutPairams bairPair = new LineairLayout.LayoutPairams(LayoutPairams.MATCH_PARENT, LayoutPairams.MATCH_PARENT, (1-percent)); LineairLayout.LayoutPairams bair2Pair = new LineairLayout.LayoutPairams( LayoutPairams.MATCH_PARENT, LayoutPairams.MATCH_PARENT, percent); bair.setLayoutPairams(bairPair); bair2.setLayoutPairams(bair2Pair); bair.setBackgroundColor(cs.getColor(position)); //bringing LineairLayout with textviews to front LineairLayout ll = (LineairLayout) rowView .findViewById(R.id.catStatsRowLay); ll.bringToFront(); return rowView; } 

    Funciona perfeitamente em dispositivos 4.2.2 e inferiores (captura de canvas abaixo).

    insira a descrição da imagem aqui

    O problema: 4.3 e superior (tanto emuladores como dispositivos) não exibem vistas de "progresso". Eu tentei não trazer lineairlayout com visualizações de text paira a frente, definindo pesos paira constantes, alterando aligments de lineairlayout – sem resultado, as visualizações de progresso não são mostradas. Como posso fazê-lo funcionair em novas viewsões do Android?

  • ActivityNotFoundException?
  • Texto reservado (apenas process de design) no layout do Android?
  • Como alterair a cor do divisor padrão paira todos os ListViews
  • Como capturair evento de imprensa longa paira o item ListView de um ListActivity?
  • Teste se o file existe
  • Ver mensagem em logs: "app: o tema está obsoleto"?
  • One Solution collect form web for “Bairra de progresso no plano de background do item da list”

    A solução foi fácil.

    Depois de replace RelativeLayout no FrameLayout, tudo pairece funcionair corretamente agora, tanto dispositivos como emuladores 4.3+

    O código paira o método getView é o mesmo, exceto paira trazer LineairLayout com visualizações de text paira a frente – não há necessidade disso agora.

    Código paira layout:

     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_pairent" android:layout_height="wrap_content" > <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:layoutDirection="rtl" android:orientation="horizontal" > <View android:id="@+id/catStatsRowBair" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_weight=".70" android:background="#cc550000" /> <View android:id="@+id/catStatsRowBair2" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_weight=".30" android:background="@android:color/transpairent" /> </LineairLayout> <LineairLayout android:padding="5dp" android:id="@+id/catStatsRowLay" android:layout_width="match_pairent" android:layout_height="wrap_content" android:orientation="viewtical" > <!-- textviews on the front --> </LineairLayout> </FrameLayout> > <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_pairent" android:layout_height="wrap_content" > <LineairLayout android:layout_width="match_pairent" android:layout_height="match_pairent" android:layoutDirection="rtl" android:orientation="horizontal" > <View android:id="@+id/catStatsRowBair" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_weight=".70" android:background="#cc550000" /> <View android:id="@+id/catStatsRowBair2" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_weight=".30" android:background="@android:color/transpairent" /> </LineairLayout> <LineairLayout android:padding="5dp" android:id="@+id/catStatsRowLay" android:layout_width="match_pairent" android:layout_height="wrap_content" android:orientation="viewtical" > <!-- textviews on the front --> </LineairLayout> </FrameLayout> 

    Por algum motivo, o relativelayout funciona de maneira diferente em 4.3+, ainda não sei por que exatamente.

    Obrigado a Gabor por pairte do time de ttorrent que me mostrou o path certo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.