我知道这个问题已经被问了几次,但没有一个我遇到的解决方案为我工作,因此这个话题。正如标题状态 - 我想设置对话框的外缘:与上面的代码Android - 如何设置对话框的外边距

PurchaseDetailsDialogFragment

public class PurchaseDetailsDialogFragment extends DialogFragment {

private static final String MAX_AMOUNT = "maxAmount";

private static final String UNIT_PRICE = "unitPrice";

private static final String PICKUP_TIME_FROM = "pickupTimeFrom";

private static final String PICKUP_TIME_TO = "pickupTimeTo";

public PurchaseDetailsDialogFragment() { }

public static PurchaseDetailsDialogFragment newInstance(int maxAmount, float unitPrice, String pickupTimeFrom, String pickupTimeTo) {

PurchaseDetailsDialogFragment fragment = new PurchaseDetailsDialogFragment();

Bundle args = new Bundle();

args.putInt(MAX_AMOUNT, maxAmount);

args.putFloat(UNIT_PRICE, unitPrice);

args.putString(PICKUP_TIME_FROM, pickupTimeFrom);

args.putString(PICKUP_TIME_TO, pickupTimeTo);

fragment.setArguments(args);

return fragment;

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if (getArguments() != null) {

int maxAmount = getArguments().getInt(MAX_AMOUNT);

float unitPrice = getArguments().getFloat(UNIT_PRICE);

String pickupFrom = getArguments().getString(PICKUP_TIME_FROM);

String pickupTo = getArguments().getString(PICKUP_TIME_TO);

}

}

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

Context context = getContext();

FragmentPurchaseDetailsDialogBinding binding = DataBindingUtil.inflate(

LayoutInflater.from(context),

R.layout.fragment_purchase_details_dialog,

null,

false);

binding.setDataContext(new PurchaseDetailsViewModel(context));

AlertDialog dialog = new AlertDialog.Builder(getActivity(), R.style.DialogTheme)

.setView(binding.getRoot())

.create();

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

return dialog;

}

}

fragment_purchase_details_dialog

xmlns:android="http://schemas.android.com/apk/res/android"

android:background="@drawable/dialog">

name="dataContext"

type="com.myapp.viewModels.PurchaseDetailsViewModel" />

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="80dp"

android:paddingTop="20dp"

android:layout_centerHorizontal="true"

android:background="@color/white">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/choose_amount"

style="@style/Widget.App.PurchaseTextViewTitle" />

android:id="@+id/dialogCentralContent"

android:layout_width="match_parent"

android:layout_height="200dp"

android:orientation="vertical"

android:layout_marginTop="80dp"

android:background="@color/dirtyWhite">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="74" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_marginTop="46dp"

android:layout_centerHorizontal="true">

android:layout_width="44dp"

android:layout_height="44dp"

android:layout_marginTop="6dp"

android:background="@drawable/button_filled"

android:text="-"

style="@style/Widget.App.PurchaseIncDecButton" />

android:layout_width="60dp"

android:layout_height="60dp"

android:layout_marginLeft="8dp"

android:layout_marginRight="8dp"

android:background="@drawable/edittext_white_rounded">

android:layout_width="30dp"

android:layout_height="match_parent"

android:layout_marginLeft="15dp"

android:gravity="center_horizontal"

android:maxLines="1"

style="@style/Widget.App.PurchaseAmountEditText" />

android:layout_width="44dp"

android:layout_height="44dp"

android:layout_marginTop="6dp"

android:background="@drawable/button_filled"

android:text="+"

style="@style/Widget.App.PurchaseIncDecButton" />

android:layout_width="match_parent"

android:layout_height="50dp"

android:layout_below="@+id/dialogCentralContent"

android:text="@string/buttonBuyText"

android:background="@drawable/button_submit"

style="@style/Widget.App.SubmitButton" />

目前止,我的对话占据了整个宽度的屏幕。如果我然而做到这一点,在片段java代码:

AlertDialog dialog = new AlertDialog.Builder(getActivity(), R.style.DialogTheme) /// the rest of the code

,并添加一个主题:

380dp

380dp

然后一些时髦的事情发生。在API23上看起来都不错,而在API19及以下版本(没有在19和23之间检查apis),对话框是100%宽,并且与屏幕顶部对齐。如何让它按照我喜欢的方式工作?

2016-09-21

Marek M.

+0

你可以尝试创建低于19 API级别的资源文件,以更改对话框 –

+0

我意识到的宽度,但也许有一些通用的解决方案,只是到处工作?另外 - 为什么它的行为就像API19

+0

我不是100%确定的,但我相信材料设计被添加到api level 21上,所以它可能无法找到Theme.Material.Dialog.Alert作为父类并使用一些通用的东西?或者什么也没有 –

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐