[英]Android animate view outside fragment is getting clipped
我有一个片段的视图。 此片段位于FrameLayout中。 我想动画这个视图移动到片段边界之外。 但是,当越过边界时,视图总是被剪裁。 我试过通过将android:clipChildren="false"
和android:clipToPadding="false"
为一切,但我无法让它工作。
这甚至可能吗?
我有片段的类似问题,并在我的层次结构中的所有级别上放了android:clipChildren="false"
和android:clipToPadding="false"
,但它仍然无效。 对我有用的技巧是在我的片段代码中添加这个覆盖:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewGroup vg = (ViewGroup) view;
vg.setClipChildren(false);
vg.setClipToPadding(false);
}
希望这可以帮助...
PS应该归功于这个答案
frangulyan你错过了你的答案中的其他代码。 以下解决方案对我有用。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LinearLayout rootView = (LinearLayout) inflater.inflate(R.layout.fragment_main, container, false);
//This can be done in XML
rootView.setClipChildren(false);
rootView.setClipToPadding(false);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//This is the NoSaveStateFrameLayout - force it to not clip
FrameLayout frameLayout = (FrameLayout) getView();
frameLayout.setClipChildren(false);
frameLayout.setClipToPadding(false);
}
@frangulyan和@Barrie Galitzky已经给出的答案都在正确的轨道上,但是我必须在层次结构中为所有父级的setClipping false添加此循环才能正常工作
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewGroup vg = (ViewGroup) view;
while(vg != null) {
vg.setClipChildren(false);
vg.setClipToPadding(false);
vg = vg.getParent() instanceof ViewGroup ? (ViewGroup) vg.getParent() : null;
}
}
我知道这有点旧了,并且已经给出了正确的答案,但我想补充一点,你可以使用ViewGroup
做与frangulyan在onCreateView
里面做同样的事情。 即:
@Override
public View onCreateView(LayoutInflater, ViewGroup container, Bundle savedInstanceState) {
container.setClipChildren(false);
container.setClipToPadding(false);
// Whatever other setup you like
return View;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.