2013-06-26 4 views
2

Это мой пользовательский диалог, есть текстовые поля и две кнопки. Я использую RelativeLayout на нем.Пользовательская высота диалога для соответствия содержимому

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

Другое дело, есть ли какое-то место между каждым видом?

enter image description here

Это

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

<TextView 
    android:id="@+id/txt_desc" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="8pt" 
    android:textStyle="italic" /> 

<TextView 
    android:id="@+id/txt_date" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"   
    android:layout_marginLeft="10dp" 
    android:layout_below="@+id/txt_desc" 
    android:textSize="8pt" /> 

<TextView 
    android:id="@+id/txt_place" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"   
    android:layout_marginLeft="10dp" 
    android:layout_below="@+id/txt_date" 
    android:textSize="8pt" /> 

<Button 
    android:id="@+id/btn_close" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/txt_place" 
    android:layout_toRightOf="@+id/view" 
    android:text="@string/btn_close" /> 

<View 
    android:id="@+id/view" 
    android:layout_width="0dp" 
    android:layout_height="1dp" 
    android:layout_centerHorizontal="true" /> 

<Button 
    android:id="@+id/btn_edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/txt_place" 
    android:layout_toLeftOf="@+id/view" 
    android:drawableLeft="@android:drawable/ic_menu_edit" 
    android:text="@string/btn_edit" /> 

</RelativeLayout> 
+0

использование MarginTop | MarginLeft | ... для вашего второго вопроса. Меры в dp – Rob013

ответ

4

Первый вопрос

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

Второй вопрос мой XML

Plus использовать Android: маргинальный inTop = "5dp", если вы хотите отделить вид сверху от 5 dp. marginLeft | Right | Bottom также доступны.

<TextView 
    android:id="@+id/txt_place" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"   
    android:layout_marginLeft="10dp" 
    android:layout_marginTop="5dp" <----------------- 
    android:layout_below="@+id/txt_date" 
    android:textSize="8pt" /> 

Кстати, если бы я был вами, я бы разложил некоторые макеты, чтобы сделать заказ. Вы можете иметь общую относительную компоновку, затем две линейные макеты: одну горизонтальную для TextViews и одну вертикальную для кнопок. Вы можете отлично играть с вашим редактором и пытаться сделать лучший внешний вид для своего диалога.

EDIT

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#0000" 
    android:orientation="vertical" 
    android:paddingBottom="50dp" > 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/txt_desc" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="prova" 
       android:textSize="8pt" 
       android:textStyle="italic" /> 

      <TextView 
       android:id="@+id/txt_date" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp" 
       android:text="prova" 
       android:textSize="8pt" /> 

      <TextView 
       android:id="@+id/txt_place" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp" 
       android:text="prova" 
       android:textSize="8pt" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <Button 
       android:id="@+id/btn_edit" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableLeft="@android:drawable/ic_menu_edit" 
       android:text="btn_edit" /> 

      <Button 
       android:id="@+id/btn_close" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="btn_close" /> 

      <View 
       android:id="@+id/view" 
       android:layout_width="0dp" 
       android:layout_height="1dp" /> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 

Я жестко закодированы тексты. Основная идея заключается в использовании большого контейнера в фоновом режиме, который является trasparent (background=#0000), а в верхней части этого макета в wrap_content, содержащем ваши представления.

Если это решение не решит вашу проблему, я думаю, вы можете редактировать высоту непосредственно в коде. Попробуйте обратиться к this question

+0

Thx! Это решило мой второй вопрос :) – rickymarchiori

+0

он должен решить обе из них: D – Rob013

+0

Вторая решена, но для первой я попытался изменить оба на wrap_content, но ничего не происходит:/Смена их в wrap_contet заставила кнопки перекрываться , Теперь это выглядит как одна кнопка в широком диалоге. – rickymarchiori

0

Установите свою относительную высоту макета wrap_content.

Например:

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

    <!-- More XML --> 

</RelativeLayout> 

быть также известно, что fill_parent не рекомендуется для ширины и высоты.

Вы можете добавить либо край (дополнительное пространство вне вида), либо дополнение (дополнительное пространство внутри вида) с помощью android:layout_margin или android:padding соответственно. Существуют также варианты, такие как layout_marginTop, которые применяются только к определенной стороне представления.

+0

У меня есть change layout_width и layout_height, как вы сказали, но ничего не изменилось :( – rickymarchiori

+0

Используется ли это в диалоговом окне Dialog? –

+0

У меня есть свой диалог dialog_show XML, затем в моей java я использую диалог Dialog dialog = new Dialog (this); .setContentView (R.layout.dialog_show) и dialog.show(); – rickymarchiori