DialogFragment 지 않는 크기를 조정하는 경우 키보드 표시
나는'm 를 사용하려고 시도SherlockDialogFragment
하는 물에서 입력 사용자. 모든 것을 전(갤럭시 넥서스,4.2),그러나 더 작은 휴대 전화(에뮬레이터 2.3.3),경우 키보드 보여줍니다,그것을 커버의 두 개의 버튼 DialogFragment 은 다음과 같습니다.
나의 레이아웃 안에 스크롤,그리고 나는'm 을 변경하 softInputMode 을SOFT_INPUT_ADJUST_RESIZE
나onViewCreated
. 도SOFT_INPUT_ADJUST_PAN
,그리고 그't work
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();
}
}
그리고 여기 나의 레이아웃:
custom_dialog.xml
<?xml version="1.0"encoding="utf-8"?> <스크롤 xmlns:안드로이드="http://schemas.android.com/apk/res/android" 안드로이드:layout_width="match_parent" 안드로이드:layout_height="match_parent">
<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>
</스크롤>
그래서,당신은 나에게 도움이 될 수,그리고 나를 안내하는 방법에 대하여 그의 버튼? 을 보거나 그것의 크기를 조정...
19
9
나는 단지를 사용하여 다음 줄에서 내 DialogFragment:
과 아무것도 여기를 참조하십시오 전체 예제:
설정
windowSoftInputMode
속성을adjustNothing 에서``AndroidManifest.xml
의 활동을 사용하는 대화 조각입니다.그리고
onCreateDialog
을 숨기려면 소프트 입력:참고:https://developer.android.com/training/keyboard-input/visibility.html#ShowOnStart
비록 그것이 조금 늦에 대한 답변,때문에 이 질문은 DialogFragment,다음과 같은 코드를 해결이 내 문제입니다.
한 스타일의 테마,내가 적용되는 다음 코드
해야 하는 레이아웃 안에 스크롤 view:
따라더크 코멘트:
이에 의해 발생할 수 있습니다:
그것을 제거하려고에서 당신의 테마입니다.
따로 언급 변경 다른 답변에서도 확인하 테마**의 dialogfragment
에서 내 실험,"**안드로이드:windowIsFloating"특성에 영향을 미치는 것으로 보는 방법 창의 반응을 입력합니다.
그것은 당신 이 옵션을 false 로 설정합니다,창 승't 슬라이드 할 때에 키보드가 표시됩니다.
이 솔루션습니다.
내부 스타일
여기에서
안드로이드:windowIsFloating
false 가 됩&안드로이드:windowSoftInputMode
해야adjustResize
.포장 내부의 레이아웃 NestedScrollView
이미 언급했듯이,
안드로이드:windowSoftInputMode="adjustResize"
와대화.getWindow().setSoftInputMode(WIndowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
는 올바른 방법이 있습니다.지만....... 의 경우 보이지 않는 크기 조정 가능한 모두에서,다음의 버튼 바닥에 있는 것입니다 여전히 숨겨져 있습니다. 제 경우에는이 해킹에 충분했:
나는
안드로이드:layout_weight
최고의 전망을 때에 키보드가 열리고 대화의 크기를 조정—top 보기 숨기:에 대한 DialogFragment,그것은 보인다는 적용 SoftInputMode 경우에만 작동에 살고 있고 내부에서 DialogFragment 클래스행되는 클래스:
또한,에 대한 종료 방법을 추가했음을 확장 레이아웃을 대화 수평: