13

Khi sử dụng các đoạn, bố trí của tôi bị xáo trộn bởi một khoảng trống ở trên cùng và tôi không biết vị trí này đến từ đâu. Nó trông giống như thế này:Bố cục lề/phần đệm ở đầu đoạn hộp thoại

enter image description here

nguồn có thể cho không gian trống rỗng này là gì? Chủ đề hoặc một số cài đặt kiểu tôi chưa tìm thấy hoặc không gian này được dành riêng cho thanh tác vụ? Tôi thực sự muốn loại bỏ điều này.

Dưới đây là xml bố trí tương ứng và mã để nhanh chóng thoại:

XML:

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

     <ProgressBar 
     android:layout_margin="5dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/search_progress" 
     style="?android:attr/progressBarStyle" 
     android:indeterminate="true" /> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_toRightOf="@+id/search_progress" 
      android:text="Searching for:" /> 

     <TextView 
      android:id="@+id/searchingNameTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
      android:layout_alignBottom="@+id/search_progress" 
      android:layout_alignLeft="@+id/textView1" 
      android:text="Barcelona" /> 

</RelativeLayout> 

Java:

FragmentManager fm = this.getSupportFragmentManager(); 
mSearchingDialog = new SearchingDialogFragment(); 
Bundle bundle = new Bundle(); 
bundle.putString("name", mCityToAdd.userName()); 
mSearchingDialog.setArguments(bundle); 
mSearchingDialog.show(fm, TAG); 

Tôi cũng hỏi câu hỏi này ở đây, suy nghĩ nó sẽ là một vấn đề tương quan với một scrollview, nhưng không gian xuất hiện trong tất cả các mảnh của tôi:

ScrollView adds extra space on top

+0

Bản sao có thể có của [Cách tạo DialogFragment không có tiêu đề?] (Http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title) –

Trả lời

21

Cố gắng gọi getWindow().requestFeature(Window.FEATURE_NO_TITLE); đúng trướcsetContentView(R.layout.<dialog_layout>); trong onCreate() hoặc onCreateView() phương pháp thoại của bạn.

+0

Cảm ơn bạn, nhưng đoạn không có phương thức getWindon(). Mã trên là tất cả những gì tôi làm để tạo ra đoạn hộp thoại, vì vậy không có onCreate(). –

+2

Để truy cập cuộc gọi cửa sổ, getActivity(). GetWindow(). Gọi nó trong phương thức onCreateView(). –

+5

Tôi đã làm 'getDialog() getWindow(). RequestFeature (Window.FEATURE_NO_TITLE);' trong phương thức 'onCreateView()' và nó hoạt động. Cảm ơn bạn! –

12

Có hai cách để sử dụng lại/xóa không gian trống đó ở đầu DialogFragment.

Nếu bạn muốn đơn giản loại bỏ nó:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); // <-- 
    View view = inflater.inflate(R.layout.fragment_dialog, container, false); 
    return view; 
} 

Nếu bạn muốn sử dụng nó cho một danh hiệu thoại:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    getDialog().setTitle("Some title..."); // <-- 
    View view = inflater.inflate(R.layout.fragment_dialog, container, false); 
    return view; 
} 
4

Tuy nhiên, một giải pháp:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(STYLE_NO_TITLE, getActivity().getApplicationInfo().theme); 
    } 

Ví dụ này sử dụng lệnh ap chủ đề mặc định. Cũng cần lưu ý rằng setStyle() cần được gọi trong số onCreate() thay vì onCreateView() để có hiệu lực.

Các vấn đề liên quan