1

{Visual Aid} 我正在制作一个带有拖放菜单的应用程序。用户可以填写三个编辑文本(宽度、高度和旋转),然后按下“添加新”按钮,并在原点创建一个具有指定值的新按钮。但是,如果旋转属性不是 0,比如 45 度,那么它会随文本一起旋转整个按钮。我希望文本保持水平而不旋转。我查了一下,但帖子都提到了我已经在使用的旋转属性。

onViewCreated()

tvAddTable = view.findViewById(R.id.btn_add_table);
    tvWidth = view.findViewById(R.id.et_width);
    tvHeight = view.findViewById(R.id.et_height);
    tvRotation = view.findViewById(R.id.et_rotation);
    mSize = new Point();
    mDisplay = Objects.requireNonNull(getActivity()).getWindowManager().getDefaultDisplay();
    mDisplay.getSize(mSize);

    final View.OnTouchListener touchListener = this;
    tvAddTable.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {[enter image description here][1]
            ConstraintLayout layout = view.findViewById(R.id.floor_layout);

            //set the properties for button
            Button btnTag = new Button(getContext());
            btnTag.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

            if(ids.isEmpty()){
                ids.add(0);
            }else{
                ids.add(ids.size());
            }
            btnTag.setId(ids.size());
            btnTag.setText(Integer.toString(btnTag.getId()));

            //add button to the layout
            layout.addView(btnTag);
            btnTag.setLayoutParams(new ConstraintLayout.LayoutParams(Integer.parseInt(tvWidth.getText().toString()), Integer.parseInt(tvHeight.getText().toString())));
            btnTag.setRotation(Integer.parseInt(tvRotation.getText().toString()));
            btnTag.setOnTouchListener(touchListener);
        }
    });
4

1 回答 1

0

旋转属性旋转整个视图,而不仅仅是文本或背景。这是设计使然。没有文本或背景旋转属性。如果需要,请制作自定义视图。

如果您只希望背景旋转,您可以通过将背景可绘制对象设置为包含所需背景的 RotateDrawable 来实现。

于 2020-04-04T07:27:16.353 回答