代码之家  ›  专栏  ›  技术社区  ›  Yevgeny Simkin

在Android中,除了绝对布局,还有什么选择?

  •  3
  • Yevgeny Simkin  · 技术社区  · 15 年前

    我看到一些帖子说FrameLayout是另一种选择,我应该用边距来定位东西(这让我觉得非常违反直觉,但没关系。。。如果行得通,我就买了)。但是,我不能让它工作,所以,我正在寻求帮助。

    这是我的密码

        FrameLayout layout = new FrameLayout(this);
        layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    
        Button btn = new Button(this);
        btn.setBackgroundResource(R.drawable.btn);
    
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        lp.setMargins(100,100,100,100);
    
        btn.setLayoutParams(lp);   //i've tried with and without this line, no change
    
        layout.addView(btn , lp);
    

    你如何让它在屏幕上的其他地方画画,而不管屏幕上还有什么?

    像往常一样,提前超级感激。

    在上面的代码中,目的是创建一个按钮,将其传递给布局,并在屏幕上以100100绘制。

    我知道在不同的设备上这可能意味着不同的事情。我没意见。我只需要一种方法,以编程方式,在运行时,将项目放置在特定位置。我不想依赖重力(或热力学定律)。我只想指定一个位置并让元素出现在那里:)

    3 回复  |  直到 15 年前
        1
  •  4
  •   Cheryl Simon    15 年前

    正如许多人指出的,在屏幕上设置一个绝对像素位置的按钮是一个非常糟糕的主意,而且永远不会适用于所有可用的android手机。我相信有更好的方法来达到你想要的布局。

    AbsoluteLayout absoluteLayout = //get absolute layout
    
    Button button = new Button();
    AbsoluteLayout.LayoutParms params = absoluteLayout.generateDefaultLayoutParams();
    params.x = 100;
    params.y = 100;
    
    absoluteLayout.addView(button, params);
    
        2
  •  1
  •   Kosi2801    15 年前

    有关不同可用布局的详细说明,请访问 http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

    因为从你的描述中我不完全理解你想要完成什么(你想覆盖这些东西吗?)也许那里的视觉例子可以帮助你理解布局是如何工作的,以及如何在上面放置东西。

        3
  •  0
  •   Kevin Coppock    15 年前

    你的最终目标是什么?如果你只需要一个按钮——比如说,在屏幕的中央,你可以用以下内容来做一个布局:

    <RelativeLayout
        android:xmlns="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        >
        <Button
            android:id="@+id/the_button"
            android:layout_width="wrap_content"
            android:layout_height = "wrap_content"
            android:text="@string/the_button_text"
            />
    </RelativeLayout>
    

    绝对布局是个坏主意,因为你需要支持大量的屏幕分辨率。一个屏幕上的100像素可能是一半,而在dpi较高的设备上,屏幕上的100像素可能不到四分之一。