Android 以编程方式在Relativelayout中设置margrin
我想通过单击按钮将带有边距的文本视图添加到Relativelayout中,但每当我将setMargins添加到LayoutParams时,它都会使TextView消失。这是我的密码 以下是我的XML: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="
<?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);
}
}