2012-03-01 2 views
1

В моем приложении у меня есть настраиваемое диалоговое окно с отображением некоторого нежелательного поля вверху, тогда как в xml я не определял никаких полей или отступов вверху. Тем не менее диалог мой выглядит следующим образом - enter image description hereУменьшить размер заголовка из CustomDialog

код для такой же, как -

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/customDialogRelativeLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
      android:id="@+id/tv_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="15dip" 
      android:layout_marginRight="15dip" 
      android:textStyle="bold" 
      android:layout_alignParentTop="true" 
      android:textColor="@color/white" 
      android:textSize="22sp"/> 

     <View 
      android:id="@+id/view_separator_in_dialog" 
      style="@style/dialog_separator" 
      android:layout_width="fill_parent" 
      android:layout_height="1dip" 
      android:visibility="gone" /> 

     <TextView 
      android:id="@+id/tv_message" 
      style="@style/dialog_message" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone" /> 

     <EditText 
      android:id="@+id/et_input_text" 
      style="@style/dialog_edittext" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/tv_message" 
      android:paddingLeft="10dip" 
      android:visibility="gone" /> 

     <TextView 
      android:id="@+id/tv_caption" 
      style="@style/dialog_caption" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/et_input_text" 
      android:visibility="gone" /> 

     <LinearLayout 
      android:id="@+id/rl_dialog_buttons_horizontal" 
      style="@style/dialog_rl_buttons" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/btn_left_dialog" 
       style="@style/dialog_button_left" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:visibility="gone" /> 

      <Button 
       android:id="@+id/btn_right_dialog" 
       style="@style/dialog_button_right" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:visibility="gone" /> 

     </LinearLayout> 
</RelativeLayout> 

Я хочу, чтобы ненужный пробел над «Подтверждение» текст, который будет удален.

Класс, который вызывает диалоговое окно, как -

общественный класс MyClass расширяет активность {

private View _separator; 
private CustomDialogBox _dialog; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.custom_dialog); 

    Object[] data = new Object[]{"Confirmation!", "Contact with this number already exits. Do you want to merge?", "Merge", "Create New"}; 
    raiseDailog(this, data); 
} 

private void raiseDailog(Context context, Object[] data) { 
    _dialog = new CustomDialogBox(this, data); 
    _dialog.show(); 
} 

}

И мой класс CustomDialog выглядит -

общественного класса CustomDialogBox продолжается Диалог {

private TextView _title, _message; 
private Button _leftButton, _rightButton; 
private View _separator; 

private String textviewTop; 
private String textviewMiddle; 
private String buttonText1; 
private String buttonText2; 

public CustomDialogBox(Context context, Object[] data) { 
    super(context); 

    setContentView(R.layout.custom_dialog); 
    initializeViews(); 
    fillData(data); 
} 

private void fillData(Object[] data) { 
    try { 
     int i = 0; 
     textviewTop = (String) data[i++]; 

     textviewMiddle = (String) data[i++]; 

     buttonText1 = (String) data[i++]; 
     buttonText2 = (String) data[i++]; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    generateDialog(); 
} 

private void generateDialog() { 
    //Title goes here 
    _title.setVisibility(View.VISIBLE); 
    _title.setText(textviewTop); 

    //Separator goes here 
    _separator.setVisibility(View.VISIBLE); 

    //Message goes here 
    _message.setVisibility(View.VISIBLE); 
    _message.setText(textviewMiddle); 

    //Ok button goes here 
    _leftButton.setVisibility(View.VISIBLE); 
    _leftButton.setText(buttonText1); 

    //Cancel button goes here 
    _rightButton.setVisibility(View.VISIBLE); 
    _rightButton.setText(buttonText2); 
} 

private void initializeViews() { 
    _title = (TextView) findViewById(R.id.tv_title); 
    _message = (TextView) findViewById(R.id.tv_message); 

    _leftButton = (Button) findViewById(R.id.btn_left_dialog); 
    _rightButton = (Button) findViewById(R.id.btn_right_dialog); 

    _separator = findViewById(R.id.view_separator_in_dialog); 
} 

Просьба помочь.

+0

изменить родительский макет на LinearLayout с вертикальной ориентацией и увидеть любую разницу – waqaslam

+0

Спасибо. Но его НЕ работает. Тот же результат. – Rajkiran

+0

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

ответ

7

Добавить this.requestWindowFeature(Window.FEATURE_NO_TITLE);

вроде как ,,

public CustomDialogBox(Context context, Object[] data) { 
     super(context); 

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.custom_dialog); 
     initializeViews(); 
     fillData(data); 

    } 
+0

Удивительный человек. Большое спасибо. – Rajkiran

0

Для меня, я использовал следующий старт для моего макета custom_dialog.xml и у него не было странное расстояние (и сделал не занимают весь экран):

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

Возможно использовать это слишком или набор ваш layout_height для fill_parent?

+0

Также не связанный с кодированием, я бы проверил вашу грамматику для сообщения. – AJcodez

+0

Я пробовал этот код. Но его НЕ работает. Вы можете попробовать поставить код внутри кода, приведенного выше. – Rajkiran

3

добавить <item name="android:windowNoTitle">true</item> для Dialog темы.

<style name="DialogTheme" parent="android:Theme.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
</style> 

Затем создайте диалог, используя эту тему.

public class ThemeDialog extends Dialog { 
    protected ThemeDialog(Context context) { 
     super(context, R.style.DialogTheme); 
    } 
} 
Смежные вопросы