Luk*_*kap 55 android view z-order android-layout
我有一个问题是将视图发送回来.在Android中,我们有一个方法bringToFront(),将视图放在另一个视图的顶部.就像那样,我想把视图放在上一张图片的下方.
有没有像任何方法sendToBack()或bringToBack()Android中.如果是这样,任何人都可以帮助我.
注意:我不想按照在布局中放置项目的顺序来控制z顺序我想以编程方式控制z顺序.
我不想隐藏前面的视图我只是希望它们在移动的视图后面.
Tur*_*rix 63
我意识到这已经隐含在其他答案中,但没有人发布代码.我在实用程序类中保留以下内容,其中我有"帮助"函数来处理视图:
public static void sendViewToBack(final View child) {
final ViewGroup parent = (ViewGroup)child.getParent();
if (null != parent) {
parent.removeView(child);
parent.addView(child, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
Zso*_*agy 32
Afaik没有内置的解决方案.我猜你试图修改FrameLayout中的z顺序,或类似的东西.
但是,我认为您可以修改布局中包含的子元素的顺序.RemoveChild ...()和addView()方法可以获取位置值,因此您很可能会交换子元素,这将修改z顺序.然而,这似乎有点hacky解决方案.
或者考虑修改子视图的可见性属性,您可能会得到类似的行为,而且我认为这样会更清晰.
编辑:
有了新的Android版本,L Developer Preview似乎最终我们能够轻松更改视图的Z顺序.'Elevation'和'TranslationZ'属性为救援:https://developer.android.com/preview/material/views-shadows.html
noo*_*oob 19
调用bringToFront()要在前面获取的视图,然后invalidate()在所有视图上调用该方法,包括前面所需的视图.对所有侦听器重复相同的操作.
因此,当另一个视图的侦听器被调用时,前一个视图将变为无效并且将在后台.
这是我用来向后面发送View的方法(与bringToFront相反,类似sendToBack):
private void moveToBack(View myCurrentView)
{
ViewGroup myViewGroup = ((ViewGroup) myCurrentView.getParent());
int index = myViewGroup.indexOfChild(myCurrentView);
for(int i = 0; i<index; i++)
{
myViewGroup.bringChildToFront(myViewGroup.getChildAt(i));
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
79126 次 |
| 最近记录: |