有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Android中更改线性布局在其父框架布局中的位置

预期结果

onClick()回调方法中,以编程方式为线性布局设置新位置

问题

线性布局和按钮都不能放置到新位置

源代码

Main.java > public class MainActivity extends Activity {}

以下两个代码段都不起作用

(一)

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(480, 800); // unit is pixel
params.leftMargin = 420;  // Shift 420 pixels from left screen border
params.rightMargin = -60; // Exceed 60 pixels from right screen border
mLinearLayout.setLayoutParams(params);

(二)

Button mButtonMenu = (Button) findViewById(R.id.button_menu);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(80, 55); // unit is pixel
params.leftMargin = 420; // unit is pixel
params.rightMargin = -60; // unit is pixel
mButtonMenu.setLayoutParams(params);

activity_main.xml>;元素结构

<FrameLayout
    <ScrollView   <!-- The menu -->
    </ScrollView>
    <LinearLayout <!-- The content -->
        <Button />
        <TextView />
    </LinearLayout>
</FrameLayout>

共 (2) 个答案

  1. # 1 楼答案

    您需要为移动LinearLayout设置LayoutParams。请参阅postHere检查过滤器激活和方法onAnimationEnd(),了解布局的移动

  2. # 2 楼答案

    您可以尝试将LinearLayout与RelativeLayout交换

    然后,当您想使某个视图位于另一个视图的下方/上方时,可以使用以下命令:

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
    
    lp.addRule(RelativeLayout.BELOW, R.id.YOUR_VIEW_ID);                            
    
    YOUR_VIEW.setLayoutParams(lp);