将TextView附加到RelativeLayout

时间:2015-05-26 15:57:06

标签: android android-layout

我的RelativeLayout包含TextView。 我想在onCreateView方法中以编程方式在现有TextView下添加一个新的TextView,但是当我尝试这样做时会发生的是我以编程方式添加的TextView与现有的TextView重叠。 更多详情如下:

public static class ContentTours extends Fragment{
    public static String TOUR_NAME= "tour_info";
    View view = getView();
    TextView contentTour;RelativeLayout toursView;
    public ContentTours(){
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.tours_view, container, false);

        toursView = (RelativeLayout) view.findViewById(R.id.rel_layout);
        contentTour = (TextView) view.findViewById(R.id.tours);

        contentTour.setText(getArguments().getString("2"));

        ViewGroup.LayoutParams stt = contentTour.getLayoutParams();

        TextView nt = new TextView(getActivity().getBaseContext());

        nt.setText(getArguments().getString("1"));

        toursView.addView(nt, new ViewGroup.MarginLayoutParams(stt));
        return view;
    }
}

我有一个包含TextView的RelativeLayout。 tours_view.xml

<RelativeLayout android:id="@+id/rel_layout"     
xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:layout_marginBottom="16dp">

    <TextView android:id="@+id/tours" android:clickable="true"
        android:background="?android:selectableItemBackground"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:text="Lorem ipsum"/>

</RelativeLayout>

我有一个Fragment类的原因是tours_view.xml是我正在应用于另一个FrameLayout的布局。

1 个答案:

答案 0 :(得分:2)

默认情况下,在 RelativeLayout 中,如果没有定义关系,视图会重叠。

您应该为要求做的是在要添加的TextView和已经存在的TextView之间创建关系(规则)。

RelativeLayout.LayoutParams stt = (RelativeLayout.LayoutParams) contentTour.getLayoutParams();

现在,添加规则

stt.addRule(RelativeLayout.BELOW, R.id.tours);

RelativeLayout.BELOW,以便新的TextView低于旧的TextView。希望这会有所帮助。