Android ListView上的布局权重会导致choiceMode停止工作
为了简洁起见,我可以将这段代码放在一起演示这个问题。问题在于ListView,如果我将两个ListView上的layout_weight设置为1,则页面布局正确,但choiceMode=singleChoice显示不正确,即所选项目不会保持高亮显示。如果layout_weight设置为0或省略,则singleChoice高亮显示工作正常,但屏幕元素在顶部卡住 我看不出这两个应该相互影响的逻辑原因。。。我倾向于称之为bug,但对我来说更重要的是如何解决它 主布局XML: 单击侦听器:Android ListView上的布局权重会导致choiceMode停止工作,android,listview,Android,Listview,为了简洁起见,我可以将这段代码放在一起演示这个问题。问题在于ListView,如果我将两个ListView上的layout_weight设置为1,则页面布局正确,但choiceMode=singleChoice显示不正确,即所选项目不会保持高亮显示。如果layout_weight设置为0或省略,则singleChoice高亮显示工作正常,但屏幕元素在顶部卡住 我看不出这两个应该相互影响的逻辑原因。。。我倾向于称之为bug,但对我来说更重要的是如何解决它 主布局XML: 单击侦听器: publi
public class MyListener implements AdapterView.OnItemClickListener {
MyActivity activity;
public MyListener(MyActivity myActivity) {
activity = myActivity;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ListView listView = (ListView)activity.findViewById(R.id.second_list);
MyData data = new MyData(activity);
Cursor cursor = data.getCursor();
String[] columns = new String[] {"name"};
int[] fields = new int[] {R.id.item_text};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
activity,
R.layout.item,
cursor,
columns,
fields,
0
);
listView.setAdapter(adapter);
}
}
您的listSelector是一种静态颜色,而不是支持选定和/或激活的状态列表,具体取决于您支持的版本。文档说明listSelector的一个选项是颜色值,格式为rgb、argb、rrggbb,或者aarrggbb:我不确定什么样的可绘制对象是合适的,我也没有找到任何例子。
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
MyData data = new MyData(this);
Cursor cursor = data.getCursor();
String[] columns = new String[] {"name"};
int[] fields = new int[] {R.id.item_text};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this,
R.layout.item,
cursor,
columns,
fields,
0
);
ListView lv = (ListView)findViewById(R.id.test_list);
lv.clearChoices();
lv.setAdapter(adapter);
lv.setOnItemClickListener(new MyListener(this));
}
public void openNewActivity(View v) {
//
}
}
public class MyListener implements AdapterView.OnItemClickListener {
MyActivity activity;
public MyListener(MyActivity myActivity) {
activity = myActivity;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ListView listView = (ListView)activity.findViewById(R.id.second_list);
MyData data = new MyData(activity);
Cursor cursor = data.getCursor();
String[] columns = new String[] {"name"};
int[] fields = new int[] {R.id.item_text};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
activity,
R.layout.item,
cursor,
columns,
fields,
0
);
listView.setAdapter(adapter);
}
}