减少Dialogue片段的宽度

时间:2016-04-22 07:17:53

标签: android

我正在创建一个DialogueFragment来显示日历,下面是Dialogue片段的代码,

public class DatePickerFragment extends DialogFragment{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.AppTheme);
    }

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

这个XMl for fragment_dialogue_datepicker

<?xml version="1.0" encoding="utf-8"?>

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

    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:spinnersShown="false"
        android:layout_gravity="center"/>

</LinearLayout>

我的问题是Dialogue宽度跨越整个屏幕,我只想让它包装内容。

链接到屏幕截图

http://imgur.com/iKJnhSK

2 个答案:

答案 0 :(得分:0)

尝试在DialogFragment中添加此代码:

@Override
public void onStart() {
    super.onStart();

    Window window = getDialog().getWindow();
    WindowManager.LayoutParams windowParams = window.getAttributes();
    window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    window.setAttributes(windowParams);
}

答案 1 :(得分:0)

创建片段时,您将该片段分配给特定视图。设置视图以包装宽度。如果您使用主框架添加片段,只需在其上添加一个新视图,并使用约束来包装宽度。如果您不明白我的意思,请告诉我。

     getFragmentManager().beginTransaction().add(R.id.fragment_frame, active, "").addToBackStack("").setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit();

在add语句中,您定义了要放置片段的位置。在XML中创建一个fragment_frame,它具有包装内容的属性。