【问题标题】:setMargrin in Relativelayout Programmatically以编程方式在相对布局中的 setMargrin
【发布时间】:2015-12-17 19:23:55
【问题描述】:

我想通过单击按钮将带有边距的文本视图添加到 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>

这是我的代码:

    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);
    }
}

【问题讨论】:

  • 消失是什么意思?
  • 你想在哪里添加文本框?在按钮的顶部还是在按钮的下方?

标签: android android-layout android-relativelayout margins


【解决方案1】:

我 99% 确定您的 TextView 在您的 Button 后面。有几个问题:

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

这会以像素为单位设置边距!如果您在 xml 布局中设置边距,它们通常设置为 dp(您可以在那里选择单位)。如果你想在你的代码中使用 dp,你必须转换 px => dp(here 你可以找到一个例子)。

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

尝试将您的 RelativeLayout 换成 LinearLayout 或提供额外的排列信息。

面向未来:Android SDK 提供的Hierarchyviewer 可以轻松解决这类问题(“我的视图缺失”)。

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多