2017-05-07 84 views
0

我在android中创建DatePickerDialog,我希望我的datepickerdialog看起来像图像中的左侧对话框。但是当我编写自己的代码时,它只是将文本日期(右侧对话框)水平排列。 我该怎么办? My image如何在android中设置DatePickerDialog的页眉布局

package com.example.luc.myapplication; 
import android.app.DatePickerDialog; 
import android.app.DialogFragment; 

import android.os.Bundle; 
import android.app.Fragment; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.DatePicker; 
import android.app.Dialog; 
import java.util.Calendar; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class DatePickerFragment extends DialogFragment implements 
DatePickerDialog.OnDateSetListener { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState){ 
    //Use the current date as the default date in the date picker 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 

    DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 
    return dialog; 
} 

public void onDateSet(DatePicker view, int year, int month, int day) { 
    //Do something with the date chosen by the user 
    LinearLayout layout = new LinearLayout(getActivity()); 
    layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    view.setLayoutParams(layout.getLayoutParams()); 
    TextView tv = (TextView) getActivity().findViewById(R.id.tv); 
    tv.setText("Date changed..."); 
    tv.setText(tv.getText() + "\nYear: " + year); 
    tv.setText(tv.getText() + "\nMonth: " + month); 
    tv.setText(tv.getText() + "\nDay of Month: " + day); 

    String stringOfDate = day + "/" + month + "/" + year; 
    tv.setText(tv.getText() + "\n\nFormatted date: " + stringOfDate); 
} 
} 

我所说的对话框中MainActivity单击按钮时

+0

请提供您的'layout.xml' –

+0

我的布局只是有一个按钮,我表现出datepickerdialog我点击一个按钮。 – luc

回答

0

我会先改变你的布局,这一点,它会给你更多的控制

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

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#008d7f" 
    android:paddingBottom="2dp" 
    android:paddingTop="5dp" 
    android:text="Friday" 
    android:textColor="#ffffff" 
    android:gravity="center_horizontal"/> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:background="#009688" 
    > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" 
    android:id="@+id/week_day" 
    android:textColor="#ffffff" 
    android:textSize="30sp" 
    android:text="MAY" 
    android:gravity="center_horizontal"/> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/day_of_month" 
    android:textSize="60sp" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" 
    android:textColor="#ffffff" 
    android:text="8" 
    android:gravity="center_horizontal" 
    android:layout_below="@+id/week_day"/> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/year" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" 
    android:textSize="20sp" 
    android:textColor="#ffffff" 
    android:text="2017" 
    android:gravity="center_horizontal" 
    android:layout_below="@+id/day_of_month"/> 

</RelativeLayout> 

和将您的java更改为:

package com.example.luc.myapplication; 
import android.app.DatePickerDialog; 
import android.app.DialogFragment; 
import android.os.Bundle; 
import android.app.Fragment; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.DatePicker; 
import android.app.Dialog; 
import java.util.Calendar; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class DatePickerFragment extends DialogFragment implements 
DatePickerDialog.OnDateSetListener { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState){ 
    //Use the current date as the default date in the date picker 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 

    DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 
    return dialog; 
} 

public void onDateSet(DatePicker view, int year, int month, int day) { 
    //Do something with the date chosen by the user 
    LinearLayout layout = new LinearLayout(getActivity()); 
    layout.setLayoutParams(new 
    ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
    ViewGroup.LayoutParams.WRAP_CONTENT)); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    view.setLayoutParams(layout.getLayoutParams()); 
    TextView tv_dayofweek = (TextView) getActivity().findViewById(R.id.day_of_week); 
    TextView tv_month = (TextView) getActivity().findViewById(R.id.month); 
    TextView tv_dayofmonth = (TextView) getActivity().findViewById(R.id.day_of_month); 
    TextView tv_year = (TextView) getActivity().findViewById(R.id.day_of_week); 
    tv.setText("Date changed..."); 
    tv_year.setText(tv.getText() + "\nYear: " + year); 
    tv_month.setText(tv.getText() + "\nMonth: " + month); 
    tv_dayofmonth.setText(tv.getText() + "\nDay of Month: " + day); 

    String stringOfDate = day + "/" + month + "/" + year; 
    tv.setText(tv.getText() + "\n\nFormatted date: " + stringOfDate); 
    } 
} 

只是测试,这是结果:

enter image description here

+0

感谢您的回答,但我如何获得DatePickerDialog的标题并更改其布局。 “onDateSet”方法用于设置与我的DatePickerDialog不相关的MainActivity布局中的文本。 – luc

+0

在MainActivity中有一个TextView“电视”(MainActivity布局有两个元素TextView和Button)...对不起,我忘了告诉你 – luc

+0

你是什么意思用'获取DatePickerDialog的标题并更改它的布局? –