Android Studio :筹码翻译后不能点击

hts6caw3  于 2023-03-28  发布在  Android
关注(0)|答案(1)|浏览(113)

我创建了一个可扩展的菜单,其中包含一个芯片组。当这个菜单打开或关闭时,有一个“撤消”芯片和一个“重做”芯片,当菜单打开或关闭时,它们会向上或向下翻译。我这样做是为了保存空间,并避免拥挤的UI。
问题是当菜单关闭时,撤销和重做芯片无法点击。我怀疑其他芯片正在阻止它们,尽管它们似乎被隐藏了。对此我该怎么办?
MainActivity.java:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.google.android.material.card.MaterialCardView;
import com.google.android.material.chip.ChipGroup;

public class MainActivity extends AppCompatActivity {
    private boolean menuIsOpen = true;
    private Button openCloseButton;
    private MaterialCardView menuCard;
    private ChipGroup undoRedoGroup;

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

        openCloseButton = findViewById(R.id.b_menu_openclose);
        menuCard = findViewById(R.id.menu_card);
        undoRedoGroup = findViewById(R.id.cg_undoredo);

        openCloseButton.setScaleX(-1.0f);
    }

    public void onClick_Undo(View view) {
        Log.i("MainActivity", "Undo clicked");
    }

    public void onClick_Redo(View view) {
        Log.i("MainActivity", "Redo clicked");
    }

    public void onClick_Chip(View view) {
        Log.i("MainActivity", "Chip# clicked");
    }

    public void onClick_OpenClose(View view) {
        if(menuIsOpen) closeMenu();
        else openMenu();

        menuIsOpen = !menuIsOpen;
    }

    public void openMenu() {
        menuCard.animate().alpha(1f);
        menuCard.animate().scaleX(1.0f);
        menuCard.animate().translationX(0f);

        undoRedoGroup.animate().translationY(0f);

        openCloseButton.animate().scaleX(-1.0f);
    }
    public void closeMenu() {
        menuCard.animate().alpha(0f);
        menuCard.animate().scaleX(0f);
        menuCard.animate().translationX(500f);

        undoRedoGroup.animate().translationY(-140f);

        openCloseButton.animate().scaleX(1.0f);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.card.MaterialCardView
        android:id="@+id/menu_card"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="24dp"
        app:layout_constraintBottom_toBottomOf="@+id/b_menu_openclose"
        app:layout_constraintEnd_toEndOf="@+id/b_menu_openclose"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/b_menu_openclose"
        app:strokeColor="#000000"
        app:strokeWidth="2dp">

        <com.google.android.material.chip.ChipGroup
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:layout_marginStart="10dp">

            <com.google.android.material.chip.Chip
                android:id="@+id/chip1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick_Chip"
                android:text="Chip1" />

            <com.google.android.material.chip.Chip
                android:id="@+id/chip2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick_Chip"
                android:text="Chip2" />

            <com.google.android.material.chip.Chip
                android:id="@+id/chip3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick_Chip"
                android:text="Chip3" />

            <com.google.android.material.chip.Chip
                android:id="@+id/chip4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick_Chip"
                android:text="Chip4" />
        </com.google.android.material.chip.ChipGroup>

    </com.google.android.material.card.MaterialCardView>

    <Button
        android:id="@+id/b_menu_openclose"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:onClick="onClick_OpenClose"
        app:icon="?attr/actionModeCloseDrawable"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <com.google.android.material.chip.ChipGroup
        android:id="@+id/cg_undoredo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="25dp"
        android:layout_marginTop="60dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0">

        <com.google.android.material.chip.Chip
            android:id="@+id/chip_undo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onClick_Undo"
            android:text="Undo" />

        <com.google.android.material.chip.Chip
            android:id="@+id/chip_redo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onClick_Redo"
            android:text="Redo" />
    </com.google.android.material.chip.ChipGroup>

</androidx.constraintlayout.widget.ConstraintLayout>

如果你想测试这个代码,我只是使用了一个空的活动模板和API级别32。此外,如果有一个更好的方法来创建这个可折叠的菜单,我很乐意听到它。

rkkpypqq

rkkpypqq1#

我终于找到了一个很好的解决方案,将前面按钮的可见性设置为“GONE”:

undoRedoGroup.setVisibility(View.GONE);

这允许单击它们后面的按钮,而不管按钮的位置如何。

相关问题