概述
今天有个群友问 Android 图片凸出 效果怎么弄,早以前有过类似的需求,整个项目的提示框都是一个背景,背景上方有凸出半张图片,所以用layer-list写了一个背景来实现
随便画了一下比较丑,大概就是这个样子了,从上图中应该不难看出,有三个部分,顶部为透明的,底部是有色值的,那个六角星就是凸出来的图片。
那么就来动手呗,新建一个资源文件,用layer-list属性,里面用三个item,第一个item设置高度为30dp,第二个item设置top为30dp,就刚好是个垂直布局,第三个item包含一个bitmap标签,作用是为了保持图片的原大小。
代码
layer-list背景<?xmlversion ="1.0"encoding="utf-8"?>
android:gravity="center_horizontal|top"
android:src="@mipmap/ic_sync"/>
layout 设置根节点背景 android:background="@drawable/bg_money_dialog"<?xmlversion ="1.0"encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_money_dialog"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="请输入提现金额"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="请输入提现密码"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="确认"/>
dialogFragment代码publicclassCheckoutMoneyDialogextendsDialogFragment {
@Override
publicDialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = newAlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.fragment_checkout_money_dialog, null);
builder.setView(view);
Dialog dialog = builder.create();
returndialog;
}
}
效果不佳,可能需要把 EditText 设置一下 layout_marginTop
layout_marginTop="100dp" 后确实图片没有叠在 EditText 之上,可顶部还是没有透明效果,这个原因是由于dialog背景引起的,需然layout透明,可dialog自身也是有背景的,我们把dialog背景透明一下Dialog dialog = builder.create();
Window window = dialog.getWindow();
window.setBackgroundDrawableResource(android.R.color.transparent);
returndialog;