簡體   English   中英

Android Studio - 芯片的關閉圖標不起作用(Java)

[英]Android Studio - Close Icon of a Chip does not do anything (Java)

我創建了一些Chips ,它們的右側有一個 X 符號。
但是當我點擊 X(打算關閉或移除芯片)時,什么也沒有發生。
我嘗試使用setOnCloseIconClickListener方法,但沒有效果。
我單擊 X 圖標,圖標顏色發生變化並出現咔噠聲,但芯片視圖仍保留在屏幕上。
而且我也不知道在點擊監聽的回調方法中要寫什么。

        for(int i = 0; i<products.length; i++) {
            //the chip component requires your app theme to be Theme.MaterialComponents (or a
            //descendant)
            chips[i] = new Chip(this);
            //ScrollView can only host one direct child
            ll1.addView(chips[i]);
            chips[i].setText(products[i]);
            chips[i].setCloseIconVisible(true);
        }


我試過這個,但它說變量 i 必須是最終的,這是不可能的,因為 i 正在遞增。

            chips[i].setOnCloseIconClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    chips[i].close();
                }
            });

我找到了解決方案。 這是代碼:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText et1;
    private ScrollView sv1;
    private LinearLayout ll1;
    private Chip[] chips;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et1 = findViewById(R.id.editText);
        sv1 = findViewById(R.id.scrollView);
        ll1 = new LinearLayout(this);
        ll1.setOrientation(LinearLayout.VERTICAL);
        sv1.addView(ll1);
    }

    public void splitToChips(View v) {
        String content = et1.getText().toString();
        String[] products = content.split(";");

        chips = new Chip[products.length];

        for(int i = 0; i<products.length; i++) {
            chips[i] = new Chip(this);
            ll1.addView(chips[i]);
            chips[i].setText(products[i]);
            chips[i].setCloseIconVisible(true);
            chips[i].setOnCloseIconClickListener(this);
        }
    }

    @Override
    public void onClick(View v) {
        Chip chip = (Chip) v;
        ll1.removeView(chip);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM