Я использую Android Gallery в SDK 2.3.3.Мне нужно, чтобы поле было шире для выбранного элемента.Я сохраняю ссылку на «последний» выбранный элемент, чтобы при новом выборе я мог изменить поле в макете вновь выбранного элемента, а также ранее выбранного элемента.Я пытался сделать недействительными соответствующие элементы представления, но не могу вызвать обновление элементов галереи.Будем весьма благодарны за любую помощь в том, как сделать так, чтобы изменение полей влияло на галерею.
Я с удовольствием уточню любой вопрос, если это необходимо.
Спасибо, Юань
private class MySelectListener implements AdapterView.OnItemSelectedListener {
private static final int unselected_margin_left = 1;
private static final int unselected_margin_right = 1;
private static final int selected_margin_left = 15;
private static final int selected_margin_right = 15;
private LinearLayout currWrapper = null;
private LinearLayout lastWrapper = null;
private Context ctx;
public MySelectListener(Context c) {
ctx = c;
}
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
// This LinearLayout is a wrapper for the gallery items
currWrapper = (LinearLayout)(v.findViewById(R.id.unconf_order_item_layout_wrapper));
// Reset the margins of the view that was selected
try {
if (lastWrapper != null) {
setMargins(lastWrapper, false);
}
} catch (Exception clear) {
}
// Set the "wider" margins for the selected item
try {
setMargins(currWrapper, true);
} catch (Exception animate) {
}
lastWrapper = currWrapper;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
private void setMargins(LinearLayout view, boolean selected) {
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)view.getLayoutParams();
if (selected) {
Toast.makeText(ctx, "setting selected margins", Toast.LENGTH_SHORT).show();
layoutParams.setMargins(selected_margin_left, 0, selected_margin_right, 0);
} else {
Toast.makeText(ctx, "setting unselected margins", Toast.LENGTH_SHORT).show();
layoutParams.setMargins(unselected_margin_left, 0, unselected_margin_right, 0);
}
}
}