【问题标题】:How to place center of a view inside FrameLayout如何在 FrameLayout 中放置视图的中心
【发布时间】:2016-06-29 19:20:01
【问题描述】:

我有一个FrameLayout,它已经拥有一个子视图,并且我知道它的宽度和高度(以像素为单位)。我想以编程方式添加一个新视图,使其中心位于框架布局的特定点。视图的大小未知,其FrameLayout.LayoutParams 设置为WRAP_CONTENT, WRAP_CONTENT。我该怎么做?

【问题讨论】:

    标签: android android-framelayout


    【解决方案1】:

    假设您想将TextView 放在FrameLayout 的中间。

    TextView text = (TextView)frame.findViewById(R.id.text);
    FrameLayout frame = (FrameLayout)findViewById(R.id.frame1);
    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);
    

    现在将您的 TextView 添加到您的 FrameLayout 并将重心设置为中心

    frame.addView(text);
    params.gravity=Gravity.CENTER;
    

    我没有尝试过,但我认为它应该可以工作。

    【讨论】:

    • 如果我想把 TextView 的中心放在 FrameLayout 的特定位置怎么办?假设我想把它放在位置 = (100, 50)。
    • 愚蠢的问题:所以现在我有一个名为“params”的变量,它具有我想要的布局。我需要在 FrameLayout 中调用什么才能真正使用这些参数?
    • 我的问题的答案是:text.setLayoutParams(params); // 添加到 FrameLayout 后调用
    【解决方案2】:

    在科特林

     viewToADD?.layoutParams = FrameLayout.LayoutParams
                       (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT).
                        apply {gravity = Gravity.CENTER and Gravity.CENTER_VERTICAL}
    
      frameLayout.addView(viewToADD)
    

    【讨论】:

      猜你喜欢
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多