Cómo extender correctamente LinearLayout para crear una vista personalizada

Tengo una "tarjeta", que es un LinearLayout simple con un TextView dentro

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
>
 <TextView
        android:id="@+id/card_label_txt"
        android:layout_width="wrap_content"
        android:text="label" />
</LinearLayout>

luego tengo mi Fragmento Principal con un LinearLayout vertical ... y en este fragmento principal agrego estas "cartas" al diseño principal:

# main fragment layout
View view = inflater.inflate(R.layout.main_activity, null);
LinearLayout ll = (LinearLayout) view
                .findViewById(R.id.main_activity_ll);
# get card
View card = inflater.inflate(R.layout.card, null);

# add to fragment layout
ll.addView(card);

esto funciona muy bien Y mi tarjeta llena todo el ancho del diseño del fragmento. En realidad lo que estoy esperando.

Ahora creé una Clase separada para mi Tarjeta:

Class Card extends LinearLayout{

public Card(Context context) {
        super(context);

        View view =  LayoutInflater.from(getContext()).inflate(
                R.layout.card, null);

        this.addView(view);

    }
}

Y luego, si agrego mi tarjeta al diseño del fragmento principal en el camino:

# main fragment layout
View view = inflater.inflate(R.layout.main_activity, null);
LinearLayout ll = (LinearLayout) view
                .findViewById(R.id.main_activity_ll);

# add new Card to fragment layout
ll.addView(new Card(getActivity());

luego se agrega PERO el ancho de la tarjeta ya no se llena, sino que se ajusta a la vista de texto.

¿Podría alguien explicarme por qué obtengo diferentes tamaños de ancho con estos dos métodos para agregar los mismos diseños?

Solución aquí se cambia la clase de tarjeta que resuelve este problema:

public Card(Context context) {
       super(context);

       LayoutInflater.from(getContext()).inflate(
                R.layout.card, this);
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta