1

SDK 2.3.3 で Android ギャラリーを使用しています。選択したアイテムのマージンを広くする必要があります。「最後に」選択したアイテムの参照を保持しているので、新しい選択が行われたときに、新しく選択したアイテムと以前に選択したアイテムのレイアウトの余白を変更できます。関連するビュー アイテムを無効にしようとしましたが、ギャラリー アイテムを「更新」するようにトリガーできないようです。余白の変更がギャラリーに影響を与える方法についての助けをいただければ幸いです。

必要に応じて、任意の点を明確にしていただければ幸いです。

ありがとう、ユアン

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);
        }
    }

}
4

0 に答える 0