2015-12-07 123 views
3

我有问题DialogFragmntWidthHeight。下面是我的课代表DialogFragmetn调整DialogFragment宽度和高度

public class RecipeAddDialogFragment extends DialogFragment { 

    private ArrayList<RecipeDialogItem> recipeDialogItems; 
    private RecipeAddDialogAdapter recipeDialogAdapter; 
    private String recipeUniqueId; 
    private CoordinatorLayout coordinatorLayout; 
    private RecipeAddDialogFragment recipeDialogFragment; 

    @Override 
    public void onStart() { 
     super.onStart(); 
     if (getDialog() == null) { 
      return; 
     } 

     int dialogWidth = 600; 
     int dialogHeight = 300; 
     getDialog().getWindow().setLayout(dialogWidth, dialogHeight); 
     getDialog().setTitle(getString(R.string.recipe_dialog_title)); 
    } 

    @Override 
    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_DialogFragment); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.dialog_fragment, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     recipeDialogItems = new ArrayList<>(); 
     RecyclerView dialogRecyclerView = (RecyclerView) view.findViewById(
       R.id.dialog_recycler_view); 

     recipeDialogAdapter = new RecipeAddDialogAdapter(getContext(), recipeDialogItems, 
       R.layout.recipe_dialog_item); 
     recipeDialogAdapter.setRuidClRdf(recipeUniqueId, coordinatorLayout, recipeDialogFragment); 

     dialogRecyclerView.setHasFixedSize(true); 
     dialogRecyclerView.setAdapter(recipeDialogAdapter); 
     dialogRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
     fillRecipeDialogArray(); 
    } 

    private void fillRecipeDialogArray() { 
     String name = getString(R.string.add_to_favourites); 
     int icon = R.drawable.ic_heart_48dp;; 

     RecipeDialogItem dialogItem = new RecipeDialogItem(); 
     dialogItem.setRowIcon(icon); 
     dialogItem.setRowOption(name); 
     recipeDialogItems.add(dialogItem); 

     recipeDialogAdapter.notifyDataSetChanged(); 
    } 

    public void setReferences(String recipeUniqueId, CoordinatorLayout coordinatorLayout, 
           RecipeAddDialogFragment recipeDialogFragment) { 
     this.recipeUniqueId = recipeUniqueId; 
     this.coordinatorLayout = coordinatorLayout; 
     this.recipeDialogFragment = recipeDialogFragment; 
    } 
} 

这里是.xml我在这个DialogFragment infalte:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center|left" 
    android:padding="16dp" 
    android:orientation="horizontal" 
    android:clickable="true" 
    android:background="?android:attr/selectableItemBackground"> 

    <!-- Option Icon --> 
    <ImageView 
     android:id="@+id/recipe_dialog_option_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="4dp" 
     android:tint="@color/primary" /> 

    <!-- Text Option --> 
    <TextView 
     android:id="@+id/recipe_dialog_option_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:textColor="@color/primary_text" /> 

</LinearLayout> 

的问题是,当我设置它的600×300它在显示精细尺寸我1280x720设备,但例如当我的朋友在1920x1080分辨率对话框上显示它时,只显示标题。列表被包裹,并不是完整的显示。任何想法如何自动设置它的大小来适应每个显示器并显示整个对话框,并将其包裹到它的内容中?

编辑

我想通了调整DialogFragment的宽度,以它的内容是这样的:

getDialog().getWindow().setLayout(WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT); 
    getDialog().setTitle(getString(R.string.recipe_dialog_title)); 

但高度不正常:/

+0

使用https:// github上.com/orhanobut/dialogplus它是用于显示对话框的好选择 – Ravi

+1

使用就绪库不是问题。我的目标是学习一些东西并找到解决方案。 – anton86993

回答

2

在DialogFragment。 onResume():

int width = getResources().getDimensionPixelSize(R.dimen.popup_width); 
int height = getResources().getDimensionPixelSize(R.dimen.popup_height);   
getDialog().getWindow().setLayout(width, height); 

在布局对话框:

android:layout_width="match_parent" 
android:layout_height="match_parent" 

可以采取全屏幕:

getDialog().getWindow().setLayout(
    getResources().getDisplayMetrics().widthPixels, 
    getResources().getDisplayMetrics().heightPixels 
); 

希望帮助

发现这里的想法How to set DialogFragment's width and height?

相关问题