【问题标题】:Change edittext with equally along left and right when setting width设置宽度时沿左右相等更改edittext
【发布时间】:2017-06-28 10:11:43
【问题描述】:

我有以下设置。

有一个带有左右控制器的编辑文本,用于调整大小。 当用户通过触摸和移动左控制器来调整大小时,我正在计算移动的 x 坐标与编辑文本右侧中点之间的距离。

这个想法是右侧必须保持静态,而从左侧调整大小时,左侧边界必须同样增加或减少。我在从左侧调整大小时为edittext分配新的宽度和中心,如下所示:

ivLeftControl.setPivotX(traversedPoint.x);
                    editTextViewNew.setGravity(Gravity.CENTER);
                    editTextViewNew.setWidth((int) (traversedWidth-ivLeftControl.getWidth()*2));
                    editTextViewNew.setPivotX(centerX - (traversedWidth - originalWidth)/2);

但调整大小只发生在 edittext 的右侧,而不是发生在左侧。即使我不改变枢轴,调整大小也只发生在右侧。

关于如何最好地解决此功能的任何建议?!请记住,控制器和编辑文本的整个设置都使用父布局封装。

【问题讨论】:

  • 您需要将更新后的layoutparmas 设置为EditText
  • Layoutparams 仅用于宽度或更新边距?!我相信对于edittext,可以使用edittext.setWidth()简单地设置宽度。上述问题也发生在我更新 layoutparams 并将它们设置为父级相对布局时。
  • 您需要通过计算中心位置的设备父视图宽度来更新左右边距和宽度。
  • 我没有根据控制器位置的变化来改变边距。但是我一直在尝试改变相对于背景父画布的编辑文本的左右(使用 setLeft 和 setRight 方法)。只需执行 edittext.setLeft(ChangeInPosition) 就可以了,但是当大小减小时,文本会消失,因此它会取消调整大小的想法。在此期间,我正在尝试您的建议。将更新进展情况。
  • 在下面查看我的答案。

标签: android textview resize ontouchlistener


【解决方案1】:

解决方案 - MarginLayoutParams

您需要创建 MarginLayoutParams,然后在其中设置 height 、 width 、 margins 并设置为您的视图。

MarginLayoutParams layoutParams = (MarginLayoutParams) getLayoutParams();
layoutParams.width = mPixelSize;
layoutParams.height = mPixelSize;
layoutParams.setMargins(mLeftMargin, mTopMargin, 0, 0);
requestLayout(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2016-09-04
    • 2019-11-10
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多