하단 시트 사양을 어떻게 구현합니까? http://www.google.com/design/spec/components/bottom-sheets.html
Google 드라이브의 새로운 업데이트는 플로팅 작업 버튼 누름->
허용되는 사양은 가능 여부에 관계없이 둥근 모서리에 대해 아무 말도하지 않고 어떻게해야할지 확신 할 수 없습니다. 현재 AppCompat 라이브러리를 사용하고 있으며 대상은 21로 설정되어 있습니다.
감사
하단 시트 사양을 어떻게 구현합니까? http://www.google.com/design/spec/components/bottom-sheets.html
Google 드라이브의 새로운 업데이트는 플로팅 작업 버튼 누름->
허용되는 사양은 가능 여부에 관계없이 둥근 모서리에 대해 아무 말도하지 않고 어떻게해야할지 확신 할 수 없습니다. 현재 AppCompat 라이브러리를 사용하고 있으며 대상은 21로 설정되어 있습니다.
감사
답변:
은 BottomSheet
지금의 일부입니다 android-support-library
. John Shelleys의 답변을 참조하십시오 .
안타깝게도 현재이 작업을 수행하는 방법에 대한 "공식적인"방법이 없습니다 (적어도 내가 아는 바 없음).
다행스럽게도 "BottomSheet"(클릭) 라는 라이브러리 가 있습니다.BottomSheet
Android 2.1 이상을 지원 있습니다.
드라이브 앱의 경우이 라이브러리의 코드는 다음과 같습니다.
new BottomSheet.Builder(this, R.style.BottomSheet_Dialog)
.title("New")
.grid() // <-- important part
.sheet(R.menu.menu_bottom_sheet)
.listener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO
}
}).show();
menu_bottom_sheet (기본적으로 표준 /res/menu/*.xml 리소스)
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/folder"
android:title="Folder"
android:icon="@drawable/ic_action_folder" />
<item
android:id="@+id/upload"
android:title="Upload"
android:icon="@drawable/ic_action_file_upload" />
<item
android:id="@+id/scan"
android:title="Scan"
android:icon="@drawable/ic_action_camera_alt" />
</menu>
출력은 다음과 같습니다.
제 생각에는 원본과 매우 비슷합니다. 색상이 마음에 들지 않으면 사용자 정의 할 수 있습니다 . 여기를 클릭하십시오 (클릭) .
getShareActions
가능한 모든 공유 옵션을 얻기 위해 메서드 에서 코드를 재사용했습니다 . Btw, .limit(R.integer.num_share_actions)
시트가 전체 화면을 가리지 않는 한 빌더 를 호출 하는 것도 유용합니다
개발자가 새로운 지원 라이브러리가 마침내 이것을 제공한다는 것을 알 수 있도록 내 질문에 답하십시오! 모두 강력한 Google을 환영합니다!
Android 개발자 블로그 의 예 :
// The View with the BottomSheetBehavior
View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
behavior.setBottomSheetCallback(new BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// React to state change
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});
위 의 @reVerse의 답변 은 여전히 유효한 옵션이지만 Google도 지원하는 표준이 있다는 것을 아는 것이 좋습니다.
블로그 게시물 다음 : http://android-developers.blogspot.com/2016/02/android-support-library-232.html
내 XML은 다음과 같이 보입니다.
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinator_layout"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<ImageView
android:src="@android:drawable/ic_input_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
그리고 내 조각의 onCreateView에서 :
coordinatorLayout = (CoordinatorLayout)v.findViewById(R.id.coordinator_layout);
View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
behavior.setPeekHeight(100);
behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// React to state change
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});
setPeekHeight의 기본값은 0이므로 설정하지 않으면 뷰를 볼 수 없습니다.
com.google.android.material.bottomsheet.BottomSheetBehavior
이제 공식을 사용할 수 있습니다. BottomSheetBehavior
Android 지원 라이브러리 23.2에서 API를 .
아래는 샘플 코드 스 니펫입니다.
bottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottomSheet));
case R.id.expandBottomSheetButton:
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
break;
case R.id.collapseBottomSheetButton:
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
break;
case R.id.hideBottomSheetButton:
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
break;
case R.id.showBottomSheetDialogButton:
new MyBottomSheetDialogFragment().show(getSupportFragmentManager(), "sample");
그것에 대한 이해를 얻으려면 Android BottomSheet youtube 자습서 를 참조하십시오 .
가이드 라인에있는 그대로 직선 모서리로 갈 것입니다. 구현에 관해서는-https: //github.com/umano/AndroidSlidingUpPanel 에서 아이디어를 사용하는 것이 가장 좋습니다.
그대로 사용하거나 구현 아이디어를 취할 수 있다고 생각합니다. 유사한 슬라이딩 패널을 구현하는 방법에 대한 또 다른 훌륭한 기사는 http://blog.neteril.org/blog/2013/10/10/framelayout-your-best-ui-friend/ 에서 찾을 수 있습니다.
다른 옵션은 다음과 같습니다.
Google은 최근에 공식적으로 하단 시트 를 Android 디자인 지원 라이브러리에 제공하는 Android 지원 라이브러리 23.2 를 출시했습니다 .