Линейный макет выходит за границы

У меня есть следующий макет как элемент RecyclerView, состоящий из изображения и текста:

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:id = "@+id/library_list_element"
    android:layout_width = "match_parent"
    android:layout_height = "70dp"
    android:orientation = "horizontal" >

    <ImageButton
        android:id = "@+id/button"
        android:layout_width = "50dp"
        android:layout_height = "50dp"
        android:layout_gravity = "center"
        android:layout_margin = "10dp"
        android:src = "@drawable/ic_delete_black_18dp"
        >
    </ImageButton>

    <TextView
        android:id = "@+id/folderName"
        android:layout_width = "wrap_content"
        android:layout_height = "match_parent"
        android:gravity = "center"
        android:maxLines = "3"
        android:minLines = "1"
        android:textAppearance = "?attr/textAppearanceBody1"
        android:textSize = "14sp"
        tools:text = "/sdcard/somepath/somewhere" />


</LinearLayout>

Я хочу поставить кнопку после текста. Если я инвертирую порядок текста/кнопки, текст занимает все пространство, а кнопка выходит за пределы. Я знаю, что могу указать размер текста вручную, но это не очень чисто. Как вы делаете, чтобы иметь следующий макет? :

<--------------------------Text--------------------------><-----Button----->
                         Wrapping content                       50dp

используйте ограничение или относительную компоновку для достижения этого

Rajasekaran M 18.12.2020 12:56
1
1
370
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для этого вы можете использовать layout_weight = "1" в TextView.

<TextView
    android:id = "@+id/folderName"
    android:layout_width = "0dp"
    android:layout_height = "match_parent"
    android:layout_weight = "1"
    android:gravity = "center"
    android:maxLines = "3"
    android:minLines = "1"
    android:textAppearance = "?attr/textAppearanceBody1"
    android:textSize = "14sp"
    tools:text = "/sdcard/somepath/somewhere" />

<ImageButton
    android:id = "@+id/button"
    android:layout_width = "50dp"
    android:layout_height = "50dp"
    android:layout_gravity = "center"
    android:layout_margin = "10dp"
    android:src = "@drawable/ic_delete_black_18dp" />
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/library_list_element"
android:layout_width = "match_parent"
android:layout_height = "70dp"
android:orientation = "horizontal">


<TextView
    android:id = "@+id/folderName"
    android:layout_width = "0dp"
    android:layout_height = "match_parent"
    android:layout_weight = "1"            
    android:gravity = "center"
    android:maxLines = "3"
    android:minLines = "1"
    android:textAppearance = "?attr/textAppearanceBody1"
    android:textSize = "14sp"
    tools:text = "/sdcard/somepath/somewhere" />

<ImageButton
    android:id = "@+id/button"
    android:layout_width = "50dp"
    android:layout_height = "50dp"
    android:layout_gravity = "center"
    android:layout_margin = "10dp"
    android:src = "@drawable/ic_delete_black_18dp"/>
</LinearLayout>

Другие вопросы по теме