RemoveAllViews nicht entfernen Aussicht
Ich versuche zu löschen, werden alle untergeordneten Ansichten eines linearen layout, aber nichts entfernt wird, der komisch ist der gleiche code funktioniert in einer anderen Anwendung. Hier ist der Beispielcode von der Methode, füllen Sie die choiceHolder, wenn eine Registerkarte ist ausgewählt (I entfernen Sie alle anzeigen und markieren Sie die ausgewählte und füllen auf der Grundlage, dass:
/** a method to fill the upper bar where we choose the {@link CategoriesMyBox}
* @param category
*/
private void fillNavigationBar( CategoriesGetter category) {
TextView categoryTxt = new TextView(getActivity());
// categoryTxt.setAllCaps(true);
LinearLayout.LayoutParams txtParams;
if (category.isSelected() /*|| (category.getId_categorie()==0 && allselected)*/) {
txtParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
txtParams.gravity = Gravity.CENTER;
categoryTxt.setGravity(Gravity.CENTER);
categoryTxt.setTextSize(categoryTxt.getTextSize());
txtParams.setMargins(10, 0, 10, 0);
categoryTxt.setPadding(5, 5, 5, 5);
if (category.getId_categorie() == 0) {
categoryTxt.setText(getResources().getString(R.string.all_boxs));
}else {
categoryTxt.setText(category.getName_categorie());
}
categoryTxt.setTextColor(Color.GREEN);
categoryTxt.setBackgroundDrawable(getResources().getDrawable(R.drawable.back_categories_selected));
// categoryTxt.setBackgroundColor(Color.parseColor("#E3E8E6"));
categoryTxt.setTag(category);
}else {
txtParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
txtParams.setMargins(10, 0, 10, 0);
categoryTxt.setGravity(Gravity.CENTER);
categoryTxt.setPadding(5, 5, 5, 5);
txtParams.gravity = Gravity.CENTER;
if (category.getId_categorie() == 0) {
categoryTxt.setText(getResources().getString(R.string.all_boxs));
}else {
categoryTxt.setText((category.getName_categorie()));
}
categoryTxt.setTextColor(Color.GRAY);
categoryTxt.setBackgroundDrawable(getResources().getDrawable(R.drawable.back_categories));
// categoryTxt.setBackgroundColor(Color.parseColor("#777777"));
categoryTxt.setTag(category);
}
choiceHolder.addView(categoryTxt, txtParams);
categoryTxt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CategoriesGetter cat = (CategoriesGetter)v.getTag();
id_cat = cat.getId_categorie();
for (int i = 0; i < categories.size(); i++) {
categories.get(i).setSelected(false);
}
cat.setSelected(true);
// choiceHolder.removeAllViews();
/*for(int i=0; i<((ViewGroup)choiceHolder).getChildCount(); ++i) {
View nextChild = ((ViewGroup)choiceHolder).getChildAt(i);
choiceHolder.removeView(nextChild);
}*/
while (((ViewGroup)choiceHolder).getChildCount() >0) {
View nextChild = ((ViewGroup)choiceHolder).getChildAt(0);
choiceHolder.removeView(nextChild);
}
// choiceHolder.removeAllViewsInLayout();
for (int i = 0; i < categories.size(); i++) {
fillNavigationBar(categories.get(i));
}
callbackCategory.selectCategory(cat.getId_categorie());
}
});
}
choiceHolder ist ein LinearLayout
.
und hier ist ein Bild der Probleme :
Sowie alle meine Anwendung ist gleich Verhalten, auch wenn die Aktualisierung der Liste drinnen, kann ich immer noch sehen, die Liste, die vorher war.
- Sie müssen die post viel mehr code, im moment kann man nur raten, was Sie falsch machen: Sie Sind vielleicht vergessen, deaktivieren Sie die unerwünschten Elemente aus der
categories
Liste? - es ist nicht nur ein problem in der Liste, aber in jeder Komponente wie die Preisklasse ist eine Bibliothek, die großartig in vielen meiner apps hier sehen Sie die visual verlassen hinter es ist wie ein Stapel von Bildern, auch wenn ich ersetzen ein fragment, in einen Rahmen sehe ich noch die vorherigen fragment in den Rücken.
- ANZEIGEN VON XML-CODES UND MEHR
- Ich code Hinzugefügt
RunOnUIThread()
Du musst angemeldet sein, um einen Kommentar abzugeben.
die Lösung fand ich für dieses problem ist, entfernen Sie die
fullScreen
Thema tag aus der Tätigkeit in derAndroidManifest
war es so :durch entfernen
android:theme="@style/FullscreenTheme"
von der AktivitätBoxsMainActivity
alle arbeiteten. hoffe das hilft jemanden...Der beste Weg, um sicherzustellen, dass etwas läuft über eine Ansicht ist, führen Sie es über einen post:
e.g
Haben Sie versucht, mit .invalidate() oder .postInvalidate() auf die choiceHolder?
In Ihrer xml-Datei können Sie definieren, für die gleichen Positionen in einer Seite mehrere layouts , Lassen Sie s sagen, Sie haben eine Oberfläche von der Unterseite der Seite , können Sie festlegen, Layout 1-und Layout 2 mit den gleichen Eigenschaften und man wird die Sichtbarkeit gegangen , in Ihrem code, den Sie ändern wird dies an einigen Aktionen und schalten Sie die Sichtbarkeit .
Das problem könnte sein, dass choiceHolder müssen deklariert werden, die als "final" bezeichnet zu werden, in der "onClick" - Platzierung der Anzeigen von anrufen in einer runnable, so dass es nicht als final deklariert beheben sollte. Es ist nicht ein compiler-Fehler, da es gilt eine Methode aufrufen und beim Aufruf der Methode könnte noch die Ansicht auf dem Schirm erscheinen, obwohl das übergeordnete layout ("choiceHolder") nicht behalten eine Referenz, die es Ihnen erlaubt, um es zu entfernen.