Android 以编程方式在Relativelayout中设置margrin

Android 以编程方式在Relativelayout中设置margrin,android,android-layout,android-relativelayout,margins,Android,Android Layout,Android Relativelayout,Margins,我想通过单击按钮将带有边距的文本视图添加到Relativelayout中,但每当我将setMargins添加到LayoutParams时,它都会使TextView消失。这是我的密码 以下是我的XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="

我想通过单击按钮将带有边距的文本视图添加到Relativelayout中,但每当我将setMargins添加到LayoutParams时,它都会使TextView消失。这是我的密码

以下是我的XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:id="@+id/test11">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/test"
        android:onClick="onClick"
        android:text="asdf"/>
</RelativeLayout>

我99%确定你的文本视图在你的按钮后面。有几个问题:

layoutParams.setMargins(30,30,30,30)

这将以像素为单位设置边距!如果在xml布局中设置页边距,它们通常设置为dp(您可以在此处选择单位)。如果您想在代码中使用dp,则必须转换px=>dp(您可以找到一个示例)

第二:您使用的是RelativeLayout,因此所有视图在布局中都是相对排列的。您没有向TextView提供任何信息,因此它将被放置在其父项的左侧/顶部(因此位于您的按钮后面)

尝试将您的RelativeLayout交换为线性布局或提供其他安排信息


对于未来:这些问题(“我的视图丢失”)可以通过Android SDK提供的解决方法轻松解决。

我99%确定您的文本视图位于按钮后面。有几个问题:

layoutParams.setMargins(30,30,30,30)

这将以像素为单位设置边距!如果在xml布局中设置页边距,它们通常设置为dp(您可以在此处选择单位)。如果您想在代码中使用dp,则必须转换px=>dp(您可以找到一个示例)

第二:您使用的是RelativeLayout,因此所有视图在布局中都是相对排列的。您没有向TextView提供任何信息,因此它将被放置在其父项的左侧/顶部(因此位于您的按钮后面)

尝试将您的RelativeLayout交换为线性布局或提供其他安排信息


对于未来:这些问题(“我的视图丢失”)可以通过Android SDK提供的解决方法轻松解决。

您所说的“消失”是什么意思?您想在哪里添加文本框?在按钮的顶部或下面?你说的“消失”是什么意思?你想在哪里添加文本框?在按钮的上方还是下方?
    public class tet extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
    }

    public void onClick(View v){
        TextView textView = new TextView(this);

        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);

        layoutParams.setMargins(30, 30, 30, 30);

        textView.setText("asdf");
        textView.setLayoutParams(layoutParams);
        ((RelativeLayout)findViewById(R.id.test11)).addView(textView);
    }
}