我尝试删除线性布局的所有子视图但没有删除任何东西,奇怪的是相同的代码在另一个应用程序中工作.以下是每当选择选项卡时填充choiceHolder的方法的示例代码(我删除所有视图并标记所选视图并根据它填充:
/** 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,10,0); categoryTxt.setPadding(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); categoryTxt.setGravity(Gravity.CENTER); categoryTxt.setPadding(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是一个LinearLayout.
好吧我的所有应用程序的行为方式都相同,即使更新内部列表我仍然可以看到之前的列表.
解决方法
我发现这个问题的解决方案是从AndroidManifest中的活动中删除fullScreen主题标签,它是这样的:
<application android:name="com.paperpad.myBox.ApplicationInit" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.paperpad.myBox.activities.SplashActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <Meta-data android:name="com.crashlytics.ApiKey" android:value="023e7fe8a4a93f93ffe7510201929d081b125313" /> <activity android:name="com.paperpad.myBox.activities.BoxsMainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/title_activity_Boxs_main" android:theme="@style/FullscreenTheme" > </activity> <activity android:name="com.paperpad.myBox.LoginActivity" android:label="@string/title_activity_login" android:windowSoftInputMode="adjustResize|stateVisible" > </activity> </application>
从活动BoxsMainActivityall中删除android:theme =“@ style / FullscreenTheme”.希望这有助于某人……