【发布时间】:2021-12-08 16:27:06
【问题描述】:
解决方案
Original: Window Service > Parent Layout > Views
Fixed: Window Service > Parent Layout > Parent Layout 2 > Views
在添加到窗口服务之前,您不能将不是子布局的父布局用于另一个布局。如果这样做,只有图形会缩放。
问题
我有一个 RelativeLayout,它包含一些视图,如 TextView、SeekBar 和 Button。使用setScaleX/Y,我可以成功地在视觉上缩放视图。我现在遇到的一个问题是,虽然图形已经缩放,但 onClickListeners 触摸区域并没有随着图形一起缩放。我需要触摸原始位置才能触发任何这些事件。我希望触摸区域与图形一起缩放,而不是单独缩放孩子。
当前缩放代码:
size.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
/** Max Progress is 100 **/
float scale = 1.0f;
scale = scale + 0.01f * progress;
/** mLayout is Parent Layout **/
mLayout.setScaleX(scale);
mLayout.setScaleY(scale);
mLayout.invalidate();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
【问题讨论】:
-
我使用的布局是直接添加到窗口服务中的。通过在我使用的旧布局中使用新布局,我能够缩放触摸区域以及图形。在添加到窗口服务之前,您不能将不是子布局的父布局用于另一个布局。
标签: graphics touch listener parent scaling