Android ExpandableList Activity子的android:layout_weight无法正常工作

时间:2013-05-20 20:59:15

标签: android expandablelistview android-layout-weight

我正面临一个让我发疯的问题。那是事情。我有一个展开媒体文件的可扩展列表活动。一组是音频文件,另一组是图像文件。 AudioGroup的孩子有一个布局,ImageGroup的孩子有另一个不同的布局。这是我正在使用的代码

可扩展的列表适配器,CHILDVIEW PART

 @Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
    inflaterChild=activity.getLayoutInflater(); 
    convertView=null;

    //seleccionamos el layout que nos convenga en funcion de si es audio o imagen

    //audio
    if(mediaObjects.get(groupPosition).getFiles().get(childPosition).getTipo()==1){
        viewChild=inflaterChild.inflate(R.layout.layout_child_media_musica, null);  
        descripcion=(TextView)viewChild.findViewById(R.id.descripcionMusica);
        descripcion.setText(Html.fromHtml(mediaObjects.get(groupPosition).getFiles().get(childPosition).getDescripcion()));
    }

    //imagen
    if(mediaObjects.get(groupPosition).getFiles().get(childPosition).getTipo()==2){         
        viewChild=inflaterChild.inflate(R.layout.layout_media_imagenes, null);              
        thumbnail=(ImageView)viewChild.findViewById(R.id.thumbnailMedia);
        thumbnail.setImageResource(R.drawable.portada);
        descripcion=(TextView)viewChild.findViewById(R.id.descripcionImagen);
        descripcion.setText(Html.fromHtml(mediaObjects.get(groupPosition).getFiles().get(childPosition).getDescripcion()));
    }
    return viewChild;
}

支持AUDIOGROUP

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    tools:context=".Media" 
    android:orientation="vertical"
    android:id="@+id/childMediaMusica"
    android:weightSum="100">

    <TextView 
        android:id="@+id/descripcionMusica"
        android:layout_height="0dp"
        android:layout_weight="30"
        android:layout_width="match_parent"/>

    <LinearLayout 
        android:id="@+id/contenedorBotones"
        android:layout_height="0dp"
        android:layout_weight="70"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:weightSum="100">

        <Button 
            android:id="@+id/playStop"
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="50"/>

        <Button 
            android:id="@+id/down"
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="50"/>        
    </LinearLayout>

 </LinearLayout>

布局IMAGEGROUP

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    tools:context=".Media" 
    android:orientation="horizontal"
    android:weightSum="100">

    <ImageView 
        android:id="@+id/thumbnailMedia"
        android:layout_width="0dp"
        android:layout_weight="35"
        android:layout_height="50dp"
        android:scaleType="fitXY"
        android:contentDescription="@string/desc"/>

    <TextView 
        android:id="@+id/descripcionImagen"
        android:layout_width="0dp"
        android:layout_weight="65"
        android:layout_height="50dp"/>   

</LinearLayout>

正如您所看到的,这是一个非常简单的代码。嗯,这就是结果:

enter image description here

AudioGroup布局未填充整个宽度。 ImageGroup布局很乱,就像它看不到我写的重量。

有谁知道这到底发生了什么?

我已经测试过了:

  • 每个布局中主要LinearLayout上的fill_parent,match_parent,wrap_content等的每个组合。

  • 尝试使用dp meassure(这可行,但不是我想要的东西)

  • 尝试在ImageGroup布局上使用其他图像

  • 使用ViewHolder和convertView内容来管理getChildView方法中的布局

任何这些东西(除了使用dp大小)都有效,但我愿意接受建议,即使意味着再做一次。

谢谢大家

1 个答案:

答案 0 :(得分:0)

JODERRR POR FIN !!!

好的,我刚刚解决了它。我带了3个* f * * 小时。设置正确的ExpandibleList布局很简单:

 <ExpandableListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent" 
    android:layout_height="0dp"
    android:layout_weight="90"
    android:choiceMode="singleChoice"/>

在第一个时刻,我将layout_width作为wrap_content。

之前我无法相信我没有注意到它