同じ解像度(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>