Я использую LayoutInflater для раздувания внутренностей представления в конструкторе представления следующим образом:
public class TrackHeader extends RelativeLayout {
public TrackHeader( Context context ) {
super( context );
final LayoutInflater inflater = getLayoutInflater( );
final RelativeLayout view = (RelativeLayout) inflater.inflate(
R.layout.trackheader, this, true );
< more here >
}
(я тоже пробовал следующее)
public TrackHeader( Context context ) {
super( context );
final LayoutInflater inflater = getLayoutInflater( );
final RelativeLayout view = (RelativeLayout) inflater.inflate(
R.layout.trackheader, this, false );
addView( view, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT ) );
< more here >
}
}
XML достаточно прост:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView android:id="@+id/trackNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_gravity="center_horizontal"
android:textSize="16dip"
/>
<Button android:id="@+id/waveformBtn"
android:layout_width="match_parent"
android:layout_height="40dip"
android:layout_below="@+id/trackNumber"
android:layout_gravity="center_horizontal"
android:textSize="12dip"/>
<CheckBox android:id="@+id/enabledCheck"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/waveformBtn"
android:layout_gravity="center_horizontal"
android:textSize="12dip"/>
<CheckBox android:id="@+id/loopingCheck"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/enabledBtn"
android:layout_gravity="center_horizontal"
android:textSize="12dip"/>
</RelativeLayout>
Причина, по которой я раздуваю это таким образом, заключается в том, что класс (TrackHeader) является вложенным / внутренним классом, и это, кажется, мешает мне ссылаться на класс непосредственно в XML. Ну, когда надувать, макет не работает. Верхний узел (RelativeLayout) имеет правильный размер для заполнения TrackHeader, но дочерние представления вообще не имеют размера и остаются (0, 0, 0, 0). Любопытно, если кто-нибудь из поклонников Android сможет подтолкнуть меня в правильном направлении ...
Спасибо заранее и счастливого кодирования! -Е.