【问题标题】:Android - Aligning a view (button) within another View in code?Android - 在代码中的另一个视图中对齐视图(按钮)?
【发布时间】:2012-09-11 04:08:20
【问题描述】:

我有一个自定义视图,它将被打包并添加到另一个项目中。在视图中,我想提供一个按钮选项。

这是我在 CustomView 类中的内容。

final CustomView currentView = (CustomView) findViewById(this.getId());

RelativeLayout.LayoutParams params = (new   RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT ));

params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
closeButton.setLayoutParams(params);

currentView.addView(closeButton);

这都包含在一个RelativeLayout标签以及应用程序的其他对象中

一切都可以编译,但是在 CustomView 中,按钮是左对齐而不是右对齐。任何想法???

【问题讨论】:

    标签: android mobile button layout view


    【解决方案1】:

    我猜问题出在您的 CustomView 上。它可能不会占用窗口的整个宽度,并且宽度足以填充其子项(在您的情况下,它是关闭按钮)。确保您的 CustomView 具有fill_parent 水平布局。

    由于您的 CustomView 扩展了 WebView,而 WebView 又扩展了 AbsoluteLayout,因此您不能指望它处理 RelativeLayout 的参数。相反,最好将 customview 和关闭按钮放在 RelativeLayout 中并正确定位它们。

    【讨论】:

    • CustomView 中已经有一个图像,我正在尝试将关闭按钮对齐图像的右上角。 ://
    • 在这种情况下,这可能是您自定义视图的布局代码中的错误。可以发一下吗?
    • 在原始问题中发布...另外,我说的是您的自定义视图如何布置其子视图,而不是 XML。
    • 由于我在代码中创建了自定义视图,我不确定自定义视图的布局是如何设置的?
    • 您的 CustomView 是从什么派生而来的?
    【解决方案2】:

    将您的closeButton 添加到您的currentView 时,您还需要提供 LayoutParams 作为参数以使它们生效。

    基本上,切换

    currentView.addView(closeButton);
    

    currentView.addView(closeButton, params);
    

    由于按钮的宽度设置为 wrap_content,您也可以尝试将其 layout_gravity 设置为右。

    params.gravity = Gravity.RIGHT;
    

    【讨论】:

    • 您的自定义视图是否扩展了 RelativeLayout?
    • 在布局 xml 中,它位于包含我的应用程序中所有其他对象的相同 RelativeLayout 标记下。所以我相信。
    • 我指的是您定义自定义视图的类。它需要继承 RelativeLayout 以便添加到它的子级尊重 RelativeLayout.LayoutParams 属性。
    • 啊,我的 CustomView 是绝对布局。我该如何改变这一点?
    • 您应该只将 Button 添加到自定义视图的父视图中,因为您说它是一个 RelativeLayout。
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多