我尝试在我的RelativLayout中添加一个Button。 它有效,但按钮相互重叠。 我想我已经覆盖了LayoutParams,或者我使用了错误的方法,但我不知道。
这只是一个考验。在最终版本中,我想在一个带有relativLayout的scrollView中添加一个未定义数量的按钮。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.freddy.test.MainActivity"
android:id="@+id/relative_main">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add new Button"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
XML文件:
{{1}}
答案 0 :(得分:0)
按钮相互重叠,因为您使用的是RelativeLayout,而没有告诉相对于Layout的按钮应该放在哪个位置。 可能有用的东西是使用LinearLayout而不是RelativeLayout并向其添加按钮。
答案 1 :(得分:0)
但这只是一个测试,在最终版本中我想添加一个 带有relativLayout的滚动视图的未定义数量的按钮 它
如果你的问题是那个
按钮相互重叠
解决起来相对简单。请改用<LinearLayout>
在根标记中,只需添加名为android:orientation="vertical"
或android:orientation="horizontal"
的属性即可。
对于RelativeLayout,还有一些属性可以解决这个问题,但它有点复杂。 如果这些是你经常遇到的问题,我建议你选择this课程。
示例:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</ScrollView>
答案 2 :(得分:0)
尝试使用此而不是FrameLayout.LayoutParams 这使您可以更好地控制相对布局子项(因为您的父布局是RelativeLayout)
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
您可以通过以下方式与其他视图对齐: params.addRule(RelativeLayout.BELOW,R.id.putyourviewhere);
这是你坚持使用RelativeLayout。但是LinearLayout的解决方案也没问题。但是RelativeLayout有更多的控制权
答案 3 :(得分:0)
当您使用RelativeLayout
时,如果您希望按钮按水平或toRightOF
,则必须使用below
要排列垂直,以便以编程方式添加任何内容,只需将其作为规则添加到layoutParams
:
lp.addRule(RelativeLayout.RIGHT_OF, R.id.button);
OR
lp.addRule(RelativeLayout.BELOW, R.id.button);
答案 4 :(得分:0)
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
lp.topMargin = R.id.button;
// use some meaningful margin, R.id.button can return any integer value.
// you have issue with alignment of button
ll.addView(myButton);
// with this call your button should be in view hierarchy now you have to align your button. best is use RelativeLayout.LayoutParams and make your button relative(top/bottom/left/right) to some other component in viewgroup(RelativeLayout).
答案 5 :(得分:0)
好的,现在尝试添加另一个参数来控制布局,如居中CENTER_HORIZONTAL
params.addRule(RelativeLayout.CENTER_HORIZONTAL, -1); // -1 means that CENTER_HORIZONTAL doesn't take a view as a parameter