Я относительно новичок в программировании и раскладке для Android, и застрял при создании собственного списка с текстом и значками. Я проверил и опробовал несколько примеров, и попытался создать из них свой собственный список. Сейчас я нахожусь в такой точке, что я не знаю, что мне следует сделать, чтобы заставить это работать так, как я хочу.
Вот мой текущий результат (1-й ряд), а 2-й ряд - мое уродливое издание MsPaint - о том, как бы я этого хотел. Текст, который обрезается, если он достигает значка увеличительного стекла, с двумя другими значками после него.
Я попробовал довольно много разных макетов, чтобы выполнить это, и мне сказали и прочитали, что я должен использовать относительную компоновку, так как они имеют лучшую производительность и другие вещи (которые я сейчас не могу вспомнить).
[Редактировать] Обновление и обобщенная проблема: Я немного озадачен, но я думаю, что моя настоящая проблема заключается в том, что текстовое представление не знает заранее, что я буду помещать больше значков справа от лупы. Это означает, что он не «резервирует» пространство для этих значков, а просто занимает все доступное пространство и оставляет только часть для значка увеличения. [/ Edit]
У меня есть 3 XML-файла, которые содержат мой макет. Вот мой первый файл, это просто макет, с которого я запускаю экран:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/LayoutWrap">
<ListView
android:id="@+id/my_listview"
style="@style/List"/>
</LinearLayout>
'xml-файл' 'my_listview' (я знаю, что это глупое имя:)):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/myListItem"
android:id="@+id/list">
<TextView
android:id="@+id/my_item_title"
style="@style/myItemName"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/my_item_detail"
android:text="Name" />
<ImageView
android:id="@id/my_item_detail"
style="@style/myImageItem"
android:src="@drawable/ic_my_detail_unselected"
android:contentDescription="Detail"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/my_item_delete"
/>
<ImageView
android:id="@id/my_item_delete"
style="@style/myImageItem"
android:src="@drawable/ic_my_delete_unselected"
android:text="Delete my"
android:layout_alignParentTop="true"
/>
<ImageView
android:id="@+id/my_item_copy"
style="@style/myImageItem"
android:src="@drawable/ic_my_update_unselected"
android:text="Copy my"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/my_item_delete"
/>
</RelativeLayout>
В моем 'styles.xml' определены стили, которые не имеют специальных свойств. Я думаю, что единственная интересная вещь заключается в том, что я стилизовал текст, имеющий определенный textSize (возможно, лучше? Android: LargeAppearance или около того), и что я поместил его в одну строку.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="WrapBoth">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="WrapHeight">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="LayoutWrap">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:orientation">vertical</item>
</style>
<style name="List" parent="style/WrapHeight"/>
<style name="myListItem">
<item name="android:padding">5dp</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">?android:attr/listPreferredItemHeight</item>
</style>
<style name="myItemName" parent="style/WrapBoth">
<item name="android:textSize">11sp</item>
<item name="android:textStyle">bold</item>
<item name="android:ellipsize">end</item>
<item name="android:lines">1</item>
<item name="android:scrollHorizontally">true</item>
</style>
<style name="myImageItem" parent="style/WrapBoth">
</style>
</resources>
Я уже благодарен за любую помощь заранее! Тем временем я поработаю над своими «buttonListeners», я не ожидаю, что они будут большой проблемой:)