【问题标题】:How to set Margin of a textview in a relative layout如何在相对布局中设置文本视图的边距
【发布时间】:2014-11-14 04:10:07
【问题描述】:

当父级是线性布局时,我已经阅读了一些关于以编程方式设置文本视图边距的答案,但在我的情况下,我需要在相对布局中设置文本视图的边距

这是我尝试过但没有奏效的方法:

description 是我在以下代码中的文本视图:

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        params1.addRule(RelativeLayout.RIGHT_OF, idsArray[i]);
        params1.addRule(RelativeLayout.LEFT_OF, R.id.imageButtonCamera);
        params1.addRule(RelativeLayout.BELOW, R.id.divider);
        params1.setMargins(8, 8, 8, 8)

        description.setLayoutParams(params1);

有什么提示吗?

UDPATE:

我的布局 xml 文件:

带有 id textViewTip 的 TextView 是我需要更改 relative 和 margins 属性的那个。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_layout_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/layer_car_background" >

<TextView
    android:id="@+id/textViewItemTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="12dp"
    android:layout_marginLeft="8dp"
    android:layout_marginBottom="12dp"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

 <ImageView
    android:id="@+id/imageViewTitle"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/textViewItemTitle"
    android:src="@drawable/ic_action_expand" />

<RelativeLayout
    android:id="@+id/relativeLayoutExpandable"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="16dp"
    android:animateLayoutChanges="true"
    android:layout_below="@+id/textViewItemTitle" >

    <View
        android:id="@+id/divider"
        android:layout_alignParentTop="true"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray" />

    <ImageView
        android:layout_below="@id/divider"
        android:id="@+id/imageViewItem"
        android:layout_width="100dp"
        android:layout_height="133dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textViewTip"
        android:textSize="12sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageViewItem"
        android:layout_alignTop="@+id/imageViewItem"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="22dp"
        android:layout_marginBottom="22dp"
        android:layout_toLeftOf="@+id/imageButtonCamera"
        android:layout_toRightOf="@+id/imageViewItem"
        android:text="TextView" />

    <EditText
        android:id="@+id/editTextDescription"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@id/textViewTip"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="@string/enter_own_description"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/imageView1"
        android:layout_marginRight="12dp"
        android:src="@drawable/ic_ok" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/imageView2"
        android:layout_below="@+id/imageView2"
        android:layout_marginTop="8dp" />

    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/checkBox1"
        android:layout_alignBottom="@+id/checkBox1"
        android:layout_alignRight="@+id/imageView1" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_below="@+id/editTextDescription"
        android:layout_marginRight="17dp"
        android:layout_toLeftOf="@+id/imageView2"
        android:src="@drawable/ic_repair" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/checkBox2"
        android:layout_alignBottom="@+id/checkBox2"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="8dp"
        android:text="@string/estimated_cost"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/editTextEstCost"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/checkBox1"
        android:layout_toLeftOf="@+id/checkBox2"
        android:layout_toRightOf="@+id/textView1"
        android:layout_marginRight="24dp"
        android:ems="10"
        android:inputType="numberDecimal" />

    <ImageButton
        android:id="@+id/imageButtonCamera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/textViewTip"
        android:background="@android:color/transparent"
        android:src="@drawable/ic_action_camera" />

</RelativeLayout>

【问题讨论】:

  • 您的描述布局是否已经在 xml 中指定了 layout_margin 属性?
  • 是的,我应该删除它吗?
  • 请看我的回答

标签: android textview android-relativelayout layoutparams


【解决方案1】:
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,  RelativeLayout.LayoutParams.WRAP_CONTENT);

    params1.setMargins(8, 8, 8, 8);

    description.setLayoutParams(params1);

试试这个。因为它现在正在工作并将提供利润。

看看我更新的答案。从 xml 中,边距布局运行良好,您可以从 xml 设置边距。作为

   <TextView
    android:id="@+id/textViewTip"
    android:textSize="12sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageViewItem"
    android:layout_alignTop="@+id/imageViewItem"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="22dp"
    android:layout_marginBottom="22dp"
    android:layout_toLeftOf="@+id/imageButtonCamera"
    android:layout_toRightOf="@+id/imageViewItem"
    android:text="Changable" />

它正在工作,如果您想以编程方式更改边距,请使用以下代码。

    LayoutParams p=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    TextView tv=(TextView)findViewById(R.id.textViewTip);

    p.setMargins(30, 30, 30, 30);
    tv.setLayoutParams(p); 

【讨论】:

  • 这就是我首先做的
  • 如果您已经在 xml 中指定了属性,那么您必须获取该属性并修改它们,然后在描述布局上设置布局参数
  • 我无法将两个参数都设置为我的文本视图。如果我设置了 marginlayoutparams 我将失去我的相对参数。
  • 是的,这就是为什么通过 xml 或代码使用一种方法的原因。发布 xml 文件。
  • 看我的回答。如果它正在提供帮助,请接受它并随时询问是否有任何疑问。
猜你喜欢
  • 2011-06-16
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2013-05-12
  • 2013-11-23
相关资源
最近更新 更多