我之前可以发誓这是有效的,但现在当我测试它时,我有一个问题。我有一个自定义列表视图,其中包含一系列不同高度的文本视图。在Android 4.x中它完美无缺。在我的旧2.3手机上显示列表,但它只有一行高,因此无法看到大部分文本视图。它的行为应该如此,它滚动,我可以通过长按来删除项目。
我尝试将TextView
高度更改为固定值,这适用于4.x但在2.3上没有区别
以下是相关的代码: notam_list.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listOfNotams"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
mylistviewstyle.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listviewText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="6dp"
android:textSize="12sp" />
活动摘录:
public class NotamList extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notam_list);
final ListView listOfNotams = (ListView) findViewById(R.id.listOfNotams);
....
}
final StableArrayAdapter adapter = new StableArrayAdapter(this, R.layout.mylistviewstyle, NOTAMS);
listOfNotams.setAdapter(adapter);
listOfNotams.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view, int position, long id) {
final String item = (String) parent.getItemAtPosition(position);
Pattern pattern;
Matcher matcher;
if (item.substring(4, 5).matches("-")) {
pattern = Pattern.compile("[A-Z][A-Z][A-Z][A-Z]-[A-Z][0-9]+/[12]\\d");
matcher = pattern.matcher(item);
matcher.find();
String notamSelected = matcher.group(0);
HiddenNotam hiddenNotam = new HiddenNotam(notamSelected, 1);
if (db.checkHiddenNotamExists(notamSelected)) {
db.deleteHiddenNotam(hiddenNotam);
Toast toast = Toast.makeText(getApplicationContext(), notamSelected + " Un-Hidden", Toast.LENGTH_SHORT);
toast.show();
} else {
db.addHiddenNotam(hiddenNotam);
if (hideNotams) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
// POSSIBLE SOLUTION TO THIS
// http://nineoldandroids.com/
NOTAMS.remove(item);
adapter.notifyDataSetChanged();
} else {
view.animate().setDuration(2000).alpha(0).withEndAction(new Runnable() {
@Override
public void run() {
NOTAMS.remove(item);
adapter.notifyDataSetChanged();
view.setAlpha(1);
}
});
}
}
Toast toast = Toast.makeText(getApplicationContext(), notamSelected + " Hidden", Toast.LENGTH_SHORT);
toast.show();
}
} else {
Toast toast = Toast.makeText(getApplicationContext(), "This can't be hidden", Toast.LENGTH_SHORT);
toast.show();
}
return true;
}
});
}
private class StableArrayAdapter extends ArrayAdapter<String> {
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
public StableArrayAdapter(Context context, int textViewResourceId, List<String> objects) {
super(context, textViewResourceId, objects);
for (int i = 0; i < objects.size(); ++i) {
mIdMap.put(objects.get(i), i);
}
}
@Override
public long getItemId(int position) {
String item = getItem(position);
return mIdMap.get(item);
}
@Override
public boolean hasStableIds() {
return true;
}
}
有什么想法吗?
编辑:我刚刚发现在我的帮助屏幕中,这只是一系列文本没有包装的TextViews。每个TextView只是变成一条大线,当然没有水平滚动。我已经用完全相同的方式编写了其他应用程序(据我所知),之前我没有遇到过这个问题?答案 0 :(得分:1)
看起来这是手机问题。我已完全卸载它,然后重新安装,它再次正常工作。谢谢你的期待。