2015-02-26 1 views
0

ТребованиеЦентрирование TextView, сохраняя его слева от кнопки?

У меня есть кнопка и TextView, и я хочу TextView быть сосредоточены в родительском зрения, в то время как кнопка находится на правой стороне родительского вида.

подход

Так что я взял RelativeLayout, сделать TextView layout_centerHorizontal = "истина", а кнопка layout_alignParentRight = "истинный".

Код

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/title_header_TV" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="TextView" /> 
     <!-- Doesnt work --> 
     <!-- android:layout_toLeftOf="@+id/right_button" --> 

    <Button 
     android:id="@+id/right_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true"   
     android:text="Button" /> 

</RelativeLayout> 

Проблема

Так, если текст слишком длинный, он получает написано на верхней части кнопки.

Я попытался сделать layout_toLeftOf = "@ + id/right_button" в текстовом режиме, но теперь TextView больше не центрирован.

+0

добавить 'android: ellipsize =" end "в тег Textview. –

+0

@GiruBhai Это не сработало. Это сработало для вас? Кроме того, что делает android: ellipsize do ?? –

+0

Что вы хотите, когда текст слишком длинный? 'ellipsize =" end "'сокращает текст и добавляет три точки в конце. – Lamorak

ответ

0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <!-- Doesnt work --> 
    <!-- android:layout_toLeftOf="@+id/right_button" --> 
    <Button 
    android:id="@+id/right_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true"   
    android:text="Button" /> 
    <TextView 
    android:id="@+id/title_header_TV" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/right_button" 
    android:layout_alignBottom="@+id/right_button" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="80dp" 
    android:text="TextView" /> 

попробовать это

+0

Это не сработало. Это сработало для вас? Я не мог использовать layout_alignBottom = "@ + id/right_button", потому что я уже использую этот тег с другим видом. Будет ли это иметь значение? –

+0

Также, что делает android: layout_alignBaseline do ?? –

0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 

<TextView 
    android:id="@+id/title_header_TV" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_toLeftOf="@+id/right_button" 
    android:gravity="center" 
    android:text="This is a test message, This is a test message This is a test message " /> 
<!-- Doesnt work --> 
<!-- android:layout_toLeftOf="@+id/right_button" --> 

<Button 
    android:id="@+id/right_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="Button" /> 

</RelativeLayout> 
+0

Это не сработало. Это сработало для вас? Я не мог использовать layout_alignBottom = "@ + id/button1", потому что я уже использую этот тег с другим видом. Будет ли это иметь значение? –

+0

Также, что делает android: layout_alignBaseline do ?? –

+0

Я отредактировал код, посмотрю его работу – omujeebr

0

Пожалуйста, измените к `

<Button 
    android:id="@+id/right_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="Button" /> 

<TextView 
    android:id="@+id/title_header_TV" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/right_button" 
    android:layout_alignTop="@id/right_button" 
    android:layout_centerHorizontal="true" 
    android:layout_toLeftOf="@id/right_button" 
    android:gravity="center" 
    android:text="TextView" /> 

`

+0

Почему я должен использовать Android: layout_below, когда я хочу кнопку, чтобы быть на право ?? Мой взгляд горизонтальный, а не вертикальный. –

+0

Я отредактировал код, пожалуйста, проверьте. – Krish

+0

Нет. Не работает. Я хочу, чтобы текст находился в центре в соответствии с родительским представлением (в центре горизонтали RelativeLayout). –

0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <!-- Doesnt work --> 
    <!-- android:layout_toLeftOf="@+id/right_button" --> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="15dp" 
    android:layout_marginTop="17dp" 
    android:gravity="center" 
    android:text="Add your demo text here for small and large" 
    android:layout_toLeftOf="@+id/button1"/> 
<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/textView1" 
    android:layout_marginLeft="19dp" 
    android:text="Button" 
    android:layout_alignParentRight="true"/> 
</RelativeLayout> 
+0

Это не гарантирует правильность выравнивания моей кнопки (когда текст слишком мал). Этот вид также будет отличаться для разных размеров экрана и плотности. Также я не могу выбрать ширину в пикселях из-за того же размера экрана и плотности. –

+0

1) Для малого текста вы можете проверить, что эта кнопка по-прежнему находится на его позиции. 2) Для разных размеров экрана вы можете создать различную компоновку (надеюсь, вы знаете, как это сделать). 3) о размерах экрана и сущности вы можете использовать то, что лучше всего подходит по вашему требованию – rogerwar

+0

Предоставление фиксированной ширины в dp для моего TextView и выравнивание моей кнопки в соответствии с тем, что TextView не кажется хорошей идеей. Также мой менеджер никогда не одобрит этот код во время обзора. –

0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 

<TextView 
    android:id="@+id/title_header_TV" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_toLeftOf="@+id/right_button" 
    android:gravity="center" 
    android:text="TextView " /> 

<Button 
    android:id="@+id/right_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="Button" /> 

</RelativeLayout> 

проверьте это. очень простое решение для вас

+0

Что !! Это абсолютно не работает. Я хочу, чтобы текст находился в центре в соответствии с родительским представлением (в центре горизонтали RelativeLayout). –

1

Попробуйте это.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"> 


    <View 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center"/> 

    <TextView 
     android:id="@+id/title_header_TV" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="TextView" /> 

    <Button 
     android:id="@+id/right_button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button" /> 


</TableRow> 
</RelativeLayout> 
+0

Кажется, это самый подходящий ответ. Но он не будет работать, если текст кнопки слишком длинный. Кроме того, TextView не будет расширять определенный предел, если текст кнопки слишком короткий. –