首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >FrameLayout未显示在文本视图下

FrameLayout未显示在文本视图下
EN

Stack Overflow用户
提问于 2017-09-18 01:44:24
回答 1查看 30关注 0票数 2

我试图动态地创建一个RelativeLayout,但是由于某些原因,定制视图被绘制在文本视图之上。有没有人知道哪里出了问题,以及如何将文本视图放在绘图上方?

代码语言:javascript
复制
public class MyRLayout extends android.support.v4.app.Fragment {

    public MyRLayout() {}

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        return inflater.inflate(R.layout.my_relativelayout, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        View v = getView();
        assert v != null;

        RelativeLayout relativelayout = v.findViewById(RelativeLayout_custom);

        RelativeLayout.LayoutParams rlp1 = new RelativeLayout.LayoutParams(GridLayout.LayoutParams.MATCH_PARENT, GridLayout.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams paramsP1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);

        // add text view
        TextView tv1 = new TextView(getActivity());
        tv1.setText("Hello World");
        TextViewCompat.setTextAppearance(tv1, android.R.style.TextAppearance_Medium);
        tv1.setTextColor(Color.WHITE);
        tv1.setGravity(Gravity.CENTER);

        // set view for drawing1
        FrameLayout frameLayoutP1 = new FrameLayout(getActivity());
        paramsP1.height = fortyDp;
        Drawing1 cvDrawing1 = new Drawing1(getActivity());
        cvDrawing1.setLayoutParams(paramsP1);
        frameLayoutP1.addView(cvDrawing1);

        // generate IDs for views
        tv1.setId(View.generateViewId());
        frameLayoutP1.setId(View.generateViewId());

        // set RelativeLayout rules for views
        paramsP1.addRule(RelativeLayout.BELOW, tv1.getId());

        // setLayoutParams for views
        tv1.setLayoutParams(rlp1);

        // add views to RelativeLayout
        relativelayout.addView(tv1);
        relativelayout.addView(frameLayoutP1);

        super.onActivityCreated(savedInstanceState);
    }
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-18 01:46:23

代码语言:javascript
复制
  tv1.setLayoutParams(rlp1);

应该是

代码语言:javascript
复制
  tv1.setLayoutParams(paramsP1); 

(您添加了以下规则的那个)

您设置了错误的LayoutParams。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46267036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档