2016-05-05 3 views
1

я проектирования приложения того, как ожидается UI, как этотперенос текста в две строки - recyclerview

Expected

я использую RecyclerView с

StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,1); 
     recyclerView.setLayoutManager(manager); 

и это строка XML файла

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="@dimen/padding_8dp" 
    android:layout_marginLeft="@dimen/padding_4dp" 
    android:layout_marginRight="@dimen/padding_4dp" 
    > 

    <com.skcsllp.mutterfly.views.widgets.MfTextView 
     android:id="@+id/tagName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@style/textview" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center" 
     android:textSize="@dimen/text_18" 

     android:background="@drawable/selector_tags" 
     android:textColor="@color/tags_text_color" 

     /> 

</LinearLayout> 

используя этот много, я получаю вывод как

What i am getting

я не хочу теги идти на вторую линию. я знаю о том, что я использовал подсчет диапазона как 3 и поэтому получаю 3 тега в одной строке, но есть ли способ избежать обертывания текста в две строки?

+0

вы можете добавить в ваш XML андроида: строки = "1" –

+0

я пробовал но половина текста уходит с макета, как в случае с партийным животным, он показывает только партию –

+0

попробуйте изменить размер текста – Abhishek

ответ

5

Вместо RecyclerView я хотел бы предложить вам использовать AndroidTagView

необходимость добавить DEPENDENCY

dependencies { 
    compile 'co.lujun:androidtagview:1.0.3' 
} 

в главном XML, вместо RecyclerView

<co.lujun.androidtagview.TagContainerLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_margin="0dp" 
android:padding="10dp" 
app:container_enable_drag="false" 
app:horizontal_interval="10dp" 
app:vertical_interval="10dp" 
app:tag_clickable="true" 
app:tag_theme="pure_teal" /> 

и в вашей деятельности/фрагмента

TagContainerLayout mTagContainerLayout = (TagContainerLayout) findViewById(R.id.tagcontainerLayout); 
mTagContainerLayout.setTags(List<String> tags); 

вы получите вывод что-то вроде ниже, поскольку вы можете ссылаться на эту библиотеку, они также дали хороший пример.

enter image description here

другие Полезные библиотеки перечислены ниже:

https://github.com/loopeer/MultiTextTagView
https://github.com/klinker41/android-chips
https://github.com/ApmeM/android-flowlayout
https://github.com/blazsolar/FlowLayout

+0

Спасибо, друг! его кучу информации в одном ответе. но все же м не в пользу использования какой-либо библиотеки только для одной экранной задачи. anyways thankx –

+0

Его до вас, чтобы использовать его или нет, я просто дал самый простой способ реализовать ваш экран. –

+1

эй @ Ravi вы могли бы мне помочь с этим [https://github.com/whilu/AndroidTagView/issues/13) –

0

Думаю, вам нужно написать пользовательскую ViewGroup. Используя onMeasure и onLayout ViewGroup, получите полную ширину экрана. Затем измерьте размер TextView. Если ширина TextView меньше ширины экрана, поместите TextView. Перейдите к следующему TextView с оставшейся шириной. Если ширина TextView больше, чем оставшаяся ширина экрана, поместите TextView на следующую строку. Продолжайте это, пока не поместите все текстовые элементы.

+0

Я думаю, я пробовал это, если я использую пользовательскую ViewGroup [check] (http://s32.postimg.org/4tbcuk7yd/Screen_Shot_2016_05_05_at_11_59_20_am.png) –

+0

может быть некоторая ошибка в вашем коде. TextViews должен быть установлен в singleLine/noOfLines = "1", так что они не будут обертываться во вторую строку. – Bob

+0

будет просто проверять, так как я делал все с помощью кода. не было никакого xml. –

Смежные вопросы