在My Custom AbsoluteLayout中,我按如下方式覆盖updateViewLayout:
参数" view"这是一个EditText。
@Override public void updateViewLayout(View view, ViewGroup.LayoutParams params) {
super.updateViewLayout(view, params);
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
params.width = ViewGroup.LayoutParams.WRAP_CONTENT;
view.setLayoutParams(params);
}
这会导致EditText在到达自定义布局的末尾时不会换行。这是一个屏幕截图,显示了正在发生的事情
编辑:只是为了澄清,将EditText拖到视图上的任何位置后都会发生这种情况。否则在拖动之前它会顺利运行。如果它的原因在onDrop方法中。这是我的自定义布局中的OnDrop方法。我按照this guide
实施public void onDrop(DragSource source, int x, int y, int xOffset, int yOffset,
DragView dragView, Object dragInfo)
{
final EditText v = (EditText) dragInfo;
int dragViewWdith = dragView.getWidth();
int dragViewHeight = dragView.getHeight();
int layoutWidth = this.getWidth();
int layoutHeight = this.getHeight();
int left = x - xOffset;
int top = y - yOffset;
L.e("layoutWidth : " + layoutWidth);
if (left < 0) {
left = 0;
}
if (left + dragViewWdith > layoutWidth) {
left = layoutWidth - dragViewWdith;
}
if (top < 0) {
top = 0;
}
if (top + dragViewHeight > layoutHeight) {
top = layoutHeight - dragViewHeight;
}
final MyAbsoluteLayout.LayoutParams params = new MyAbsoluteLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT, left, top);
v.post(new Runnable() {
@Override public void run() {
updateViewLayout(v, params);
}
});
答案 0 :(得分:0)
尝试在活动的onCreate方法中执行此操作。
您需要首先知道editText所属的Parent ViewGroup的类型,因此如果它是RelativeLayout,您可以这样做。
按以下方式设置layoutParams:
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
您可以通过说
将RelativeLayout.LayoutParams应用于editTexteditText.setLayoutParams(RLP);