Поскольку вы определяете layout_height вашего TextView как "fill_parent", он займет оставшееся пространство. Вот почему он показывает правильно, если он объявлен последним: изображения используют только необходимое им пространство (layout_height = "wrap_content").
В зависимости от того, что вы хотите сделать, вы можете попробовать установить layout_height для TextView равным "wrap_content" или, если вы хотите, чтобы TextView занимал пространство между изображениями, я бы предложил вам использовать RelativeLayout:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
...>
<ImageView
android:id="@+id/timage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
android:layout_alignParentTop="true" />
<ImageView
android:id="@+id/ticon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
android:layout_alignParentBottom="true" />
<TextView
android:id="@+id/tname"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
...
android:layout_below="@+id/timage"
android:layout_above="@+id/ticon" />
</RelativeLayout>