2015-12-23 3 views
0

Это может показаться немного глупым, но я просто не могу понять, почему.android layout of relativelayout в диалоговом окне

Представление, которое я ожидаю, приведено ниже. Я хочу TextView А быть в центре по горизонтали, а TextView B AlignLeft А и выше A.

enter image description here

при попытке объявить B после того, как A (с использованием layout_alignleft и layout_above в В) в компоновке XML, то TextView В не может show и findviewId становится хаосом. , если я попробую объявить B до A (используя layout_alignleft в B, используя layout_below в A), тогда, как вы можете угадать, TextView B просто выравнивается слева от всего представления, а не TextView A.

Это происходит в DIALOG view.Of конечно я знаю, как отображать его в активности ... Когда дело доходит до диалогового окна, просто кажется абсурдным

Итак, вот вопрос, я тупой?

+0

Нет вы не глупы. Вы просто не очень много пробовали. Я бы предложил использовать Linear layout вместо Relativelayout –

+0

@ ZeeshanShabbir, но как я могу получить эффект от «одного выравнивания слева от другого»? слишком запутано ... –

+0

Не ставьте вопросы точно так же. Постарайтесь приложить несколько усилий, прежде чем вы ставите вопрос здесь ... –

ответ

1

Попробуйте, как это, это работает для меня:

ли это, показывая диалоговое окно,

Dialog dlg = new Dialog(this); 
dlg.setContentView(R.layout.dialog_layout); 
dlg.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); 

или, вы можете исправить диалог высоты, как:

dlg.getWindow().setLayout(LayoutParams.WRAP_CONTENT, 450); 

или android:layout_height="300dp"

проверьте образец кода here.

+0

Он действительно работает как charm.BTW, вы знаете, почему «setlayout» работает, и почему обычный трюк терпит неудачу? Действительно хочу объяснение LOL –

+0

Это просто просмотр проблемы с диалоги. – Srikanth

+0

Убедитесь, что один из двух параметров метода setLayout должен быть MATCH_PARENT, чтобы работать с выравниванием. Но диалоговое окно будет иметь два других широких или высоких, в любом случае, чтобы обернуть контент? –

1

Вы должны использовать toLeftOf собственности объявить TextView B.

android:layout_toLeftOf="@+id/txtA" 
0

Это так же, как на картинке:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView B align left of A" 
     android:textSize="20dp" 
     android:layout_above="@+id/textView2" 
     android:layout_alignStart="@+id/textView2" 
     android:layout_alignParentEnd="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="TextView A" 
     android:textSize="20dp" 
     android:id="@+id/textView2" /> 

</RelativeLayout> 
+0

u можете попробовать применить это к диалоговому окну, который вам интересен. Это точно то, что confuess me –

0

проверки следующий код

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#EEEEEE"> 
<TextView 
    android:layout_width="100dp" 
    android:layout_height="50dp" 
    android:id="@+id/textView1" 
    android:text="HAI" 
    android:layout_centerHorizontal="true"/> 
<TextView 
    android:layout_width="100dp" 
    android:layout_height="50dp" 
    android:id="@+id/textView2" 
    android:text="HELLO" 
    android:layout_marginStart="100dp" 
    android:layout_toStartOf="@id/textView1"/> 
</RelativeLayout> 
+0

не получил код ур –

-1

Кажется, что alignLeft или alignStart не работает в диалоговом окне

0
не

Изменить диалоговое расположение, как это:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:orientation="vertical" 
    android:padding="30dp" > 

    <TextView 
     android:id="@+id/sample2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView B align left of A" /> 

    <TextView 
     android:id="@+id/sample" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView A" /> 
</LinearLayout> 
</RelativeLayout> 
+0

В этом случае длина этого двух TextView сделает его двумя видами. LOL –

+0

В соответствии с моим knoledge, в этом случае, вы должны сделать высоту «match_parent» или зафиксировать высоту диалога. – Srikanth

+0

Если вы продолжаете wrap_content, основной макет будет рендерингом сначала, textview в центре, так что даже вы даете другим иждивенцам на это текстовое представление, они не могут просматривать в случае RelativeLayout. – Srikanth

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