Tôi đang cố gắng sử dụng một số SherlockDialogFragment
để hỏi một số đầu vào từ người dùng. Tất cả mọi thứ hoạt động tốt trên điện thoại của tôi (Galaxy Nexus, 4.2), nhưng trên một chiếc điện thoại nhỏ hơn (emulator 2.3.3), khi bàn phím xuất hiện, nó bao gồm hai nút của DialogFragment, như thế này:DialogFragment không thay đổi kích thước khi bàn phím được hiển thị
Bố cục của tôi nằm trong ScrollView và tôi đang thay đổi softInputMode thành SOFT_INPUT_ADJUST_RESIZE
trên số onViewCreated
của mình. Tôi cũng đã cố gắng SOFT_INPUT_ADJUST_PAN
, và nó đã không làm việc
MyCustomDialog.java
public class AddTaskDialog extends SherlockDialogFragment implements OnDateSetListener{
//...
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
this.inflater = getActivity().getLayoutInflater();
View mainView =inflater.inflate(R.layout.custom_dialog, null);
builder.setView(mainView);
this.taskNote = (EditText) mainView.findViewById(R.id.ET_taskNote);
this.taskText = (EditText) mainView.findViewById(R.id.ET_taskText);
this.taskValue = (EditText) mainView.findViewById(R.id.ET_taskValue);
/*
* Other stuff
*/
builder.setTitle(getString(R.string.new_task, hType.toString()))
.setPositiveButton(R.string.dialog_confirm_button, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//...
}
})
.setNegativeButton(R.string.dialog_cancel_button, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
Và đây là cách bố trí của tôi:
custom_dialog.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/abs__background_holo_light">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/TV_taskText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/task_text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/ET_taskText"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="@string/create_task_hint"
android:inputType="textNoSuggestions"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_vertical_margin" >
<TextView
android:id="@+id/TV_taskNote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/task_note"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/ET_taskNote"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:minLines="2"
android:layout_weight="1"
android:ems="10"
android:inputType="textMultiLine"
android:hint="@string/task_note_hint">
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/repeat_days"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="top"
android:orientation="horizontal"
android:visibility="gone"
android:paddingLeft="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_vertical_margin">
<!-- Day buttons are put here programatically -->
</LinearLayout>
</LinearLayout>
Vì vậy, bạn có thể giúp tôi và hướng dẫn tôi cách hiển thị các nút đó không? Hoặc để PAN chế độ xem hoặc để thay đổi kích thước ...
Vì đó là một DialogFragment, nó không có bất kỳ hoạt động liên quan nào trong tệp kê khai, do đó, điểm đầu tiên là vô dụng, nhưng điểm đầu tiên là cố định nó. Cảm ơn. – MagicMicky
Tôi đã chỉnh sửa câu trả lời của mình để cụ thể hơn về phiên bản của mã kê khai. –
Tại sao không có 'dialog.getWindow(). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); hộp thoại' không được kích thước lại? Điều này trông giống như lỗi. – neworld