2015-05-28 3 views
-3

У меня есть этот макет. Моя проблема в том, что когда txtName имеет очень большое значение, txtAge не видно. Помогите мне решить эту проблему без использования атрибута maxWidth. Заранее спасибо.TextView скрывает, если другой текст очень длинный

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/txtName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textColor="@color/white" 
     android:textSize="@dimen/textLarge" /> 

    <TextView 
     android:id="@+id/txtAge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textColor="@color/white" 
     android:textSize="@dimen/textLarge" /> 
</LinearLayout> 
+0

Вам нужен линейный макет? Или мы можем использовать относительную компоновку? –

+0

Да, мы можем использовать любой из этих макетов. – batista

+0

добавлен еще один ответ здесь –

ответ

0

Попробуйте использовать это.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="center_vertical" 
android:orientation="horizontal" > 

<com.klab.lods.en.custom.views.LDTextViewBold 
    android:id="@+id/txtName" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:layout_weight="1" 
    android:gravity="center_vertical" 
    android:singleLine="true" 
    android:textColor="#000000" 
    android:textSize="@dimen/activity_horizontal_margin" /> 

<com.klab.lods.en.custom.views.LDTextViewBold 
    android:id="@+id/txtAge" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="left" 
    android:layout_weight="1" 
    android:gravity="center_vertical" 
    android:singleLine="true" 
    android:textColor="#000000" 
    android:textSize="@dimen/activity_horizontal_margin" /> 

+0

Не работает :(txtAge по-прежнему скрывает – batista

+0

Как вы настроилиText для этих. Использование кода Java –

+0

Если вы придаете весу TextView в LinearLayout, вы должны указать ширину или высоту (в зависимости от того, или горизонтальная ориентация) значение 0. – belen

1

Относительное расположение это больше подходит для позиционирования, попробуйте с этим кодом:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:padding="30dp"> 

    <TextView 
     android:id="@+id/txtName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textSize="9pt" 
     android:text="Name Surname"/> 

    <View 
     android:id="@+id/separator" 
     android:layout_width="1dp" 
     android:layout_height="5dp" 
     android:layout_marginRight="-20dp" 
     android:layout_alignRight="@+id/txtName"/> 

    <TextView 
     android:id="@+id/txtAge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/separator" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textSize="9pt" 
     android:text="Age"/> 
</RelativeLayout> 

Скажите, могу ли я помогает вам, удачи!

Pd: Я использую представление как разделитель, потому что я работаю с API> 13, если вы работаете с API> = 17, вы можете использовать эти команды android: layout_alignEnd = "" или android: layout_alignStart = "".


Окончательное решение:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:padding="30dp"> 

    <TextView 
     android:id="@+id/txtName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:layout_alignRight="@+id/separator" 
     android:layout_alignParentLeft="true" 
     android:singleLine="true" 
     android:textSize="9pt" 
     android:text="Name Surname"/> 

    <View 
     android:id="@+id/separator" 
     android:layout_width="1dp" 
     android:layout_height="5dp" 
     android:layout_alignLeft="@+id/txtAge" 
     android:layout_marginLeft="-10dp"/> 

    <TextView 
     android:id="@+id/txtAge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/txtName" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textSize="9pt" 
     android:text="Age"/> 
</RelativeLayout> 
+0

, все тот же. txtAge скрывает.: ( – batista

+0

Я пытаюсь использовать свой код в своем приложении, а txtAges не скрывает, это возможно, проблема «com.klab.lods.en.custom.views.LDTextViewBold» этого компонента ... Потому что, если я использую с моим editText, у меня нет никаких проблем ... –

+0

Я изменил его на TextView и все еще такое же поведение – batista

-1

Yo может дать своим TextViews вес так:

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="center_vertical" 
android:orientation="horizontal" > 

<com.klab.lods.en.custom.views.LDTextViewBold 
    android:id="@+id/txtName" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center_vertical" 
    android:singleLine="true" 
    android:textColor="@color/white" 
    android:textSize="@dimen/textLarge" /> 

<com.klab.lods.en.custom.views.LDTextViewBold 
    android:id="@+id/txtAge" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center_vertical" 
    android:singleLine="true" 
    android:textColor="@color/white" 
    android:textSize="@dimen/textLarge" /> 

Давать ширина 0dp и вес 1 к обоим будет заставьте их использовать одно и то же пространство внутри LinearLayout. Если вы хотите, чтобы текстовое изображение txtName было больше, чем txtAge, просто дайте более высокий вес txtName. Я надеюсь, что это вам поможет

+0

Но это не динамический. Я хочу, чтобы тексты всегда были вместе друг с другом. Давать вес так же, как дать maxWidth представления (я думаю) – batista

1

Используйте ниже код, проблема решена.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:weightSum="2" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/txtName" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textColor="@color/white" 
     android:textSize="@dimen/textLarge" /> 

    <TextView 
     android:id="@+id/txtAge" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textColor="@color/white" 
     android:textSize="@dimen/textLarge" /> 
    </LinearLayout> 

или иначе,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/txtName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:layout_weight="1" 
     android:textColor="@android:color/black" 
     android:text="Some n" 
     android:textSize="23sp" /> 

    <TextView 
     android:id="@+id/txtAge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:text="age" 
     android:layout_weight="1" 
     android:minEms="3" 
     android:textColor="@android:color/black" 
     android:textSize="23sp" /> 
    </LinearLayout> 
+0

Но это не динамический. Я хочу, чтобы тексты всегда были вместе друг с другом. Давать вес так же, как давать maxWidth представления (я думаю) – batista

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