Filhos inflados de LinearLayout personalizados não são exibidos ao sobrepor
Estou tentando mostrar umMyCustomLinearLayout
que se estendeLinearLayout
. Estou inflar oMyCustomLinearLayout
com oandroid:layout_height="match_parent"
atributo. O que eu quero é mostrar umImageView
nissoMyCustomLinearLayout
. A altura desteImageView
deveria estarmatch_parent
e a largura deve ser igual à altura. Eu estou tentando conseguir isso, substituindo oonMeasure()
método. O que acontece é queMyCustomLinearLayout
se torna quadrada como deveria, mas oImageView
não está aparecendo.
Abaixo do meu código usado.Por favor, note que esta é uma versão extremamente simplificada do meu problema. oImageView
será substituído por um componente mais complexo.
public MyCustomLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.view_myimageview, this);
setBackgroundColor(getResources().getColor(R.color.blue));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
setMeasuredDimension(height, height);
}
oview_myimageview.xml
Arquivo:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android" >
<ImageView
android:id="@+id/view_myimageview_imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" />
</merge>
Então, quando eu substituir oonMeasure()
método, oImageView
não está mostrando, quando eu não anulo oonMeasure()
método, oImageView
mostra, mas muito pequeno, porque oMyCustomLinearLayout
A largura é muito pequena.