如何在android中控制添加视图?

问题描述 投票:0回答:1

我是Android的初学者。我试图通过添加几个动态视图来控制它。我要做的是添加,删除和带前视图工作。但是我没有这样做。我附上我的代码。我最面临的最大问题是以下问题。我想先创建两个视图,然后创建一个前视图,但这仅适用于创建时间最近的视图。我想让你告诉我如何解决。

public class Fit_Me_page extends AppCompatActivity implements View.OnTouchListener {

    private RecyclerView fit_me_recyclerview;
    private ArrayList<Fit_Me_Array> fit_me_arrays;
    private Fit_Me_Adapter fit_me_adapter;
    Fit_Me_Category_Array fit_me_all_category_array;
    int category_number = 0;
    ConstraintLayout fit_me_constraintLayout;
    private ConstraintSet applyConstraintSet = new ConstraintSet();
    TextView textView, textView2;
    ImageView imageView;
    ImageView imageView2;
    ImageView testView;
    ArrayList<String> category_array_1 = new ArrayList<>();
    ArrayList<String> category_array_2;
    ImageView show_cloth_information_btn, cloth_size_up_btn, cloth_size_down_btn,
            compare_my_size_btn, cloth_bring_front_btn, cloth_send_back_btn, cloth_delete_btn;
    int number = 0;
    int i = 11;
    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fit_me_page);
        show_cloth_information_btn = findViewById(R.id.show_cloth_information);
        cloth_size_up_btn = findViewById(R.id.cloth_size_up);
        cloth_size_down_btn = findViewById(R.id.cloth_size_down);
        compare_my_size_btn = findViewById(R.id.check_my_size);
        cloth_bring_front_btn = findViewById(R.id.front_image);
        cloth_send_back_btn = findViewById(R.id.back_image);
        cloth_delete_btn = findViewById(R.id.delete_image);
        fit_me_recyclerview = findViewById(R.id.fit_me_recyclerview);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        fit_me_arrays = new ArrayList<>();
        fit_me_adapter = new Fit_Me_Adapter(this, fit_me_arrays);
        fit_me_recyclerview.setAdapter(fit_me_adapter);
        fit_me_recyclerview.addItemDecoration(new grid_view_padding(this));
        fit_me_recyclerview.setLayoutManager(gridLayoutManager);
        fit_me_constraintLayout = findViewById(R.id.fit_me_ConstraintLayout);
        fit_me_all_category_array = new Fit_Me_Category_Array();
        testView = new ImageView(Fit_Me_page.this);
        fit_me_constraintLayout.addView(testView);
        imageView2 = findViewById(R.id.imageView2);
        fit_me_adapter.setOnItemClickListener(new Fit_Me_Adapter.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
                if (position == 1 && category_number == 0) {
                    fit_me_arrays.clear();
                    for (int i = 0; i < fit_me_all_category_array.categoryOuter.size(); i++) {
                        Fit_Me_Array fit_me_array = new Fit_Me_Array(fit_me_all_category_array.categoryOuter.get(i));
                        fit_me_arrays.add(fit_me_array);
                    }
                    category_number++;
                    fit_me_adapter.notifyDataSetChanged();
                } else if (position == 1 && category_number == 1) {
                    imageView = new ImageView(Fit_Me_page.this);
                    imageView.setImageResource(R.drawable.color_wheel);
                    // imageView.setLayoutParams(layoutParams);
                    imageView.bringToFront();
                    imageView.setOnTouchListener(Fit_Me_page.this::onTouch);
                    //imageView.setOnLongClickListener(Fit_Me_page.this::onLongClick);
                    i++;
                    imageView.setId(i);
                    fit_me_constraintLayout.addView(imageView);
                } else if (position == 2 && category_number == 1) {
                    // ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(M,700);
                    imageView = new ImageView(Fit_Me_page.this);
                    imageView.setImageResource(R.drawable.camera_button);
                    // imageView.setLayoutParams(layoutParams);
                    imageView.bringToFront();
                    imageView.setOnTouchListener(Fit_Me_page.this::onTouch);
                    //imageView.setOnLongClickListener(Fit_Me_page.this::onLongClick);
                    i++;
                    imageView.setId(i);
                    fit_me_constraintLayout.addView(imageView);
                } else if (position == 0 && category_number == 1) {
                    fit_me_arrays.clear();
                    for (int i = 0; i < fit_me_all_category_array.categoryAll.size(); i++) {
                        Fit_Me_Array fit_me_array = new Fit_Me_Array(fit_me_all_category_array.categoryAll().get(i));
                        fit_me_arrays.add(fit_me_array);
                    }
                    fit_me_adapter.notifyDataSetChanged();
                    category_number--;
                }
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onResume() {
        super.onResume();
        show_cloth_information_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imageView2.bringToFront();
            }
        });

        cloth_size_up_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

        cloth_size_down_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

        compare_my_size_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
        cloth_bring_front_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                testView = fit_me_constraintLayout.findFocus().findViewById(number);
                testView.bringToFront();
            }
        });

        cloth_send_back_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

        cloth_delete_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    float oldXvalue;
    float oldYvalue;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int parentWidth = ((ViewGroup) v.getParent()).getWidth();    // 부모 View 의 Width
        int parentHeight = ((ViewGroup) v.getParent()).getHeight();    // 부모 View 의 Height

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            // 뷰 누름
            Log.d("바로?", "onTouch: " + "다운");
            oldXvalue = event.getX();
            oldYvalue = event.getY();
            number = v.getId();
            testView.setId(number);
            return true;

        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
            Log.d("바로?", "onTouch: " + "무브");
            v.setX(v.getX() + (event.getX()) - oldXvalue);
            v.setY(v.getY() + (event.getY()) - oldYvalue);
            Log.d("viewTest", "onTouch: ");
            Log.d("viewTest", "onTouch: ");
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            if (v.getX() < 0) {
                v.setX(0);
            } else if ((v.getX() + v.getWidth()) > parentWidth) {
                v.setX(parentWidth - v.getWidth());
            }

            if (v.getY() < 0) {
                v.setY(0);
            } else if ((v.getY() + v.getHeight()) > parentHeight) {
                v.setY(parentHeight - v.getHeight());
            }
            return true;
        }
        return true;
    }
}
android view controls add
1个回答
0
投票
fit_me_constraintLayout.addView(imageView);

您已经使用它来添加正确的视图。布局将像列表1一样添加视图,因此您只需要删除该特定视图并再次添加它,它将位于最上面。因此,在任何需要执行brintToFront的地方。

 fit_me_constraintLayout.removeView(imageView);
 fit_me_constraintLayout.addView(imageView);

后编辑

 cloth_bring_front_btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    testView = fit_me_constraintLayout.findFocus().findViewById(number);
                    if(testView !=null){
                      fit_me_constraintLayout.removeView(testView );
                      fit_me_constraintLayout.addView(testView );}
                     }
            });

让我知道是否有这句话

© www.soinside.com 2019 - 2024. All rights reserved.