LoginSignup
1
0

More than 5 years have passed since last update.

【未解決】ICS4.0.3未満のDatePickerがAlertDialogに貼り付けるとセンタリングされない

Posted at

同じ解像度(WXGA720)のtarget14と15のエミュレーターで比較。

AlertDialogに貼り付けると、14も15も左寄り。
Dialogにすると、14は左寄りだが15はセンタリングぽい。
DatePickerDialogも14は左寄りだが15はセンタリングぽい。

DatePickerの背景を色つけてみると、target14は明らかに右の余白が大きいorz
(キャプチャが簡単に貼れないのが残念。)

(もちろんGingerbread以下ではセンタリングされます)

非表示のCalendarViewが悪さ?
どのみちAlertDialogではどちらもNGなので、Dialogにするが、4.0.2以下がセンタリングされない。

BuildVerを見てICS4.0.3未満ならLeftPaddingを増やす・・とか考えたけたど画面サイズ増えるごとに確認が必要になるので、

ICS4.0.3未満(=Galaxy Nexus)でDatePickerがセンタリングされないのは仕様です☆

で行こうと思うw

再現するコードは以下のとおり。

MainActivity.java
public class MainActivity extends Activity implements OnClickListener{
    static final int ALERT = 100;
    static final int DIALOG = 101;
    static final int PICKERDLG = 102;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case ALERT:
        {
            View layout = getLayoutInflater().inflate(R.layout.about, null);
            return
              new AlertDialog.Builder(this)
                .setIcon(R.drawable.ic_launcher)
                .setTitle("タイトル")
                .setView(layout)
                .setPositiveButton(android.R.string.ok, null)
                .create();
        }

        case DIALOG:
        {
            Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.about);
            dialog.setTitle("タイトル");
            return dialog;
        }

        case PICKERDLG:
        {
            DatePickerDialog dialog = new DatePickerDialog(this, null, 2012, 4, 22);
            return dialog;
        }

        default:
            break;
        }
        return super.onCreateDialog(id);
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
        case R.id.button_alert:
            showDialog(ALERT);
            break;

        case R.id.button_dialog:
            showDialog(DIALOG);

            break;
        case R.id.button_datepickerdlg:
            showDialog(PICKERDLG);
            break;
        default:
            break;
        }
    }
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <DatePicker
        android:id="@+id/datePicker2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" android:background="#f66"/>

    <Button
        android:id="@+id/button_alert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:onClick="onClick"
        android:text="Open As AlertDialog" />

    <Button
        android:id="@+id/button_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Open As Dialog" />

    <Button
        android:id="@+id/button_datepickerdlg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Open As DatePickerDialog" android:onClick="onClick"/>

</LinearLayout>
about.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/layout_about_root"
    android:padding="10dip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18.0sp"
        android:paddingBottom="5dip"
        android:text="テキストボックスサンプル改行されるくらいの長さ" />

    <DatePicker
        android:id="@+id/datePicker1"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:background="#f66"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
         android:textSize="18.0sp"
        android:text="センタリング" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
         android:textSize="18.0sp"
        android:text="Center" />
</LinearLayout>
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0