自定义相对布局不呈现任何子项

时间:2017-09-13 21:46:52

标签: android android-layout layout imageview relativelayout

说明:

我正在尝试向我的自定义View添加各种RelativeLayout,即Button s,ImageView等,但这些都不会呈现/显示。

文档

如众多SO问题所示:herehereherehere等等,

我有扩展布局的标准要求,即3个构造函数,它们是:

public RelativeLayout(Context context) {}

public RelativeLayout(Context context, AttributeSet attrs) {}

public RelativeLayout(Context context, AttributeSet attrs, int defStyleAttr){}

here网站上提及Android Developer

实施

我的名为RelativeLayout的{​​{1}}具有以下实施方式:

DiceRoller

请注意:public class DiceRoller extends RelativeLayout { private DieContainer dieContainer; private Context mContext; private int speed; private Runnable moveDies; private Handler handler; private Timer timer; public DiceRoller(Context context) { super(context); mContext = context; init(); } public DiceRoller(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; init(); } public DiceRoller(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext = context; init(); } private void init() { //source : https://stackoverflow.com/questions/28265286/custom-relative-layout-not-showing-child-views setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); setGravity(Gravity.CENTER); ImageView mainImage = new ImageView(mContext); mainImage.setId(1994); LayoutParams params = new LayoutParams(100, 100); mainImage.setImageResource(R.drawable.die1); mainImage.setLayoutParams(params); addView(mainImage); RelativeLayout.LayoutParams crossParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); crossParams.addRule(RelativeLayout.ALIGN_TOP | RelativeLayout.ALIGN_LEFT, mainImage.getId()); ImageView crossImage = new ImageView(mContext); crossImage.setImageResource(R.drawable.die6); crossImage.setLayoutParams(crossParams); addView(crossImage); TextView tv = new TextView(mContext); tv.setText("hello world"); addView(tv); } } 方法的内容纯粹是为了测试视图是否实际呈现。这是我调试此问题的最后一次尝试,之前我添加了init()的观点,显然没有成功

使用关联的布局文件

MainActivity

有什么问题:

问题很简单。布局的子项不会呈现/显示/可见。

我尝试以编程方式在MainActivity中添加一个孩子。它没有渲染。我试图在这个RelativeLayout类中添加一个子节点,它没有渲染。

其他信息:

注意:添加视图时,我总是添加文字或某些图片,我还设置了<?xml version="1.0" encoding="utf-8"?> <com.myapp.DiceRoller xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="1000px" android:layout_height="1000px" android:background="@color/colorAccent" android:id="@+id/rollerBack"> </com.myapp.DiceRoller> X值,还包括Y并设置了wrap选项。

调试此问题时,如果我添加了视图(RelativeLayout.LayoutParams()ImageView等),则布局会存储每个子项,并且每个子项的父项都是Button。每个孩子都有RelativeLayoutwidthheightX值和一些内容(图片或文字),因此问题不在于孩子们。< / p>

我不知所措,我不知道为什么它不呈现,任何帮助都将不胜感激!

0 个答案:

没有答案