2016-07-10 4 views
2

Ich brauche ein unteres Blatt nicht alle Breite auf dem Tablett zu nehmen. Aber es ignoriert layout_width Attribut in XML. Wie kann ich es schaffen? Meine unteres Blatt Klasse:Wie man eine untere Blattbreite kontrolliert?

public class DetailsFragment extends BottomSheetDialogFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     //Create fragment root view 
     View view = inflater.inflate(R.layout.fragment_details, container, false); 
     //Set toolbar 
     Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); 
     Drawable icClose = VectorDrawable.getDrawable(getContext(), R.drawable.ic_close_white_24dp); 
     toolbar.setNavigationIcon(icClose); 
     toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dismiss(); 
      } 
     }); 
     toolbar.inflateMenu(R.menu.details); 
     RecyclerView rvContent = (RecyclerView) view.findViewById(R.id.rvContent); 
     FullExpandedListManager lm = new FullExpandedListManager(getContext()); 
     rvContent.setLayoutManager(lm); 
     rvContent.setHasFixedSize(true); 
     rvContent.setAdapter(mAdapter); 

     return view; 
    } 
} 

Antwort

1

mir nicht sicher tun, dass es die beste Lösung ist. Aber zumindest funktioniert es für mich.

public class DetailsFragment extends BottomSheetDialogFragment { 
    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new BottomSheetDialog(getContext(), getTheme()); 
    } 

    public static class BottomSheetDialog extends android.support.design.widget.BottomSheetDialog { 

     public BottomSheetDialog(@NonNull Context context) { 
      super(context); 
     } 

     protected BottomSheetDialog(@NonNull Context context, final boolean cancelable, 
            OnCancelListener cancelListener) { 
      super(context, cancelable, cancelListener); 
     } 

     public BottomSheetDialog(@NonNull Context context, @StyleRes final int theme) { 
      super(context, theme); 
     } 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      getWindow().setLayout(300 /*our width*/, ViewGroup.LayoutParams.MATCH_PARENT); 
     } 
    } 
} 

P.S. Ich habe versucht, eine Dialogbreite in der onStart() Methode einzustellen, aber es funktioniert nicht und ich weiß nicht warum.

+0

Kühl. Arbeitete als Champion –

Verwandte Themen