我使用ListView和CheckedTextView元素来显示清单。
它在我试过的两部手机上都很好用(两个KitKat),但我在设备上遇到问题RuggedPad(link),它也有Android 4.1.1
问题是,它不是列表,而是显示某种位图(?) - 效果是如果你滚动它自身重叠(附带截图),并且不可检查。
试图在滚动时重绘listActivity:
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
getListView().invalidate();
getListView().invalidateViews();
getListView().requestLayout();
}
还尝试禁用绘图缓存:
getListView().setDrawingCacheEnabled(false);
仍然无所作为。
这是我创建ListView的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
Intent intent = getIntent();
type = intent.getStringExtra(KEY_TYPE);
String breakdown = intent.getStringExtra(KEY_DATA);
try {
JSONData = new ArrayList<Model>();
JSONArray breakdownJSON = new JSONArray(breakdown);
for (int i = 0; i < breakdownJSON.length(); i++) {
JSONData.add(new Model(breakdownJSON.getJSONObject(i)));
}
} catch (Exception e) {
finish();
}
adapter = new ArrayAdapter<Model>(this, R.layout.action_list, JSONData) {
public long getItemId(int position) {
return position;
}
};
setListAdapter(adapter);
getListView().requestFocusFromTouch();
getListView().setOnScrollListener(this);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
for (int i = 0; i < JSONData.size(); i++) {
getListView().setItemChecked(i, JSONData.get(i).checked);
}
getListView().setDrawingCacheEnabled(false);
}
和.xml行定义:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/action_list_textview"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:textSize="22sp"
/>
感谢您的帮助。
答案 0 :(得分:0)
几个小时后我找到了理由。
问题出现在该活动的“android:theme”字段中:
android:theme="@style/FullscreenTheme"
造成了所有问题。