gpt4 book ai didi

android - 即时重新定位布局

转载 作者:太空狗 更新时间:2023-10-29 15:22:27 25 4
gpt4 key购买 nike

给定下面的 main.xml 布局,是否可以在运行时更改 FrameLayout 的“layout_gravity”并立即显示结果?

我的主要布局是一个 LinearLayout 和一个居中的 FrameLayout 子级,它有两个子级,一个 SurfaceView 和一个 ImageView(位于框架布局的底部)。

我有一个菜单,让用户可以选择重新定位框架布局,这应该通过将 layout_gravity 更改为“top”、“bottom”或“center”来完成。

为了完成这个,我使用这段代码在运行时改变重力:

int mGravity = Gravity.TOP  // gravity determined from menu selection
FrameLayout mFrameLayout = (FrameLayout)findViewById(R.id.my_framelayout);
((LinearLayout.LayoutParams) mFrameLayout.getLayoutParams()).gravity = mGravity;

但是,这不会立即生效。我只是在用户单击其他菜单项后才开始工作,这会将他们带到 Android Market。当用户退出市场并返回到我的应用程序时,才会根据用户之前选择的内容绘制新布局。

我是不是漏掉了一些简单的东西?如何在用户选择位置后立即强制重绘?我应该使什么无效?

主.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<FrameLayout
android:id="@+id/my_framelayout"
android:layout_width="fill_parent"
android:layout_height="@dimen/surfaceview_default_h"
android:layout_gravity="center">

<SurfaceView
android:id="@+id/my_surfaceview"
android:layout_width="@dimen/surfaceview_default_w"
android:layout_height="@dimen/surfaceview_default_h">
</SurfaceView>

<ImageView
android:id="@+id/my_imageview"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:src="@drawable/someimage"
android:layout_gravity="bottom">
</ImageView>

</FrameLayout>
</LinearLayout>

菜单.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/mnu_position"
android:title="@string/position">
<!-- Position submenu -->
<menu>
<group
android:id="@+id/grp_position"
android:menuCategory="container"
android:checkableBehavior="single">
<item
android:id="@+id/mnu_position_top"
android:title="@string/top">
</item>
<item
android:id="@+id/mnu_position_center"
android:title="@string/center"
android:checked="true">
</item>
<item
android:id="@+id/mnu_position_bottom"
android:title="@string/bottom">
</item>
</group>
</menu>
</item>
<item
android:id="@+id/mnu_android_market"
android:title="@string/market">
</item>
</menu>

最佳答案

尝试添加

mFrameLayout.invalidate();

设置重力后。

关于android - 即时重新定位布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com