[英]Remove Android alert dialog empty space at the top
我有一个Android布局,用于显示带有“关闭”按钮的“关于应用程序”警告对话框。 它有一个以粗体为中心的标题,应用程序版本和开发人员名称。 一切看起来都不错,除了标题上方有一个非常明显的边距/填充,我无法删除那个空白区域。
这是布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:orientation="vertical" android:scrollbars="none" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginRight="6.0dp" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="center">
<TextView android:textSize="16.0dip" android:textStyle="bold" android:textColor="#ffffffff" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginRight="6.0dip" android:layout_marginBottom="10.0dip" android:text="@string/app_name" />
</LinearLayout>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">
<TextView android:textSize="14.0dip" android:textColor="#ffffffff" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginTop="0.0dip" android:text="@string/version_text" />
<TextView android:textSize="14.0dip" android:textColor="#ffffffff" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:layout_marginTop="0.0dip" android:text="@string/app_version" />
</LinearLayout>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical">
<TextView android:textSize="14.0dip" android:textColor="#ffffffff" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="6.0dip" android:text="@string/about_developer" />
</LinearLayout>
<LinearLayout android:gravity="center" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10.0dip" xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:id="@id/close_btn" android:layout_width="110.0dip" android:layout_height="44.0dip" android:layout_marginTop="4.0dip" android:layout_marginBottom="4.0dip" android:text="@string/about_close" />
</LinearLayout>
</LinearLayout>
</ScrollView>
这是它显示的内容:
我已经尝试在许多标签中添加android:layout_marginTop="-10.0dip"
属性并搜索SO以查找类似的问题,但我找不到它。 如果有人告诉我如何解决这个问题,我会感激不尽。
您可以尝试使用DialogFragment
使用自定义视图创建自己的Dialog并设置它
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
或者也许只是尝试使用简单的Dialog
,而不是像这样的AlertDialog
Dialog dialog = new Dialog(theContext);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(yourCustomView);
dialog.show();
<style name="AlertDialogCustom" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:background">#ffffff</item>
<item name="android:textColorPrimary">#000000</item>
<item name="android:textColor">@000000</item>
<item name="android:typeface">monospace</item>
<item name="android:textSize">12sp</item>
</style>
在创建AlertDialog时定义此样式
AlertDialog.Builder builder = new AlertDialog.Builder(container.getContext(),R.style.AlertDialogCustom);
使用RelativeLayout代替(下面的代码需要调整以满足您的需求,但它给出了一般布局):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="App Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/textView" />
<TextView
android:text="Version 1.0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="29dp"
android:id="@+id/textView2" />
<TextView
android:text="Developed by Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="23dp"
android:id="@+id/textView3" />
<Button
android:text="Close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView3"
android:layout_alignLeft="@+id/textView2"
android:layout_alignStart="@+id/textView2"
android:layout_marginTop="42dp"
android:id="@+id/button2" />
</RelativeLayout>
您也可以像其他人提到的那样使用Dialog。
编辑:
您可以尝试使用自定义Dialog,然后使用DialogFragment。 要调用Dialog,请使用: new CustomDialogFragment().show(getSupportFragmentManager(), "mydialog");
然后创建一个扩展DialogFragment的新类,并使用类似于此的东西:
public class DonateDialogFragment extends DialogFragment implements View.OnClickListener
{
private AlertDialog dialog;
public interface CustomDialogListener {
void buttonClicked();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (!(activity instanceof CustomDialogListener)) {
throw new ClassCastException(activity.toString() + " must implement CustomDialogListener");
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder customDialogMain = new AlertDialog.Builder(getActivity());
donateDialogMain.setCancelable(true);
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.--YOUR-CUSTOM-DIALOG-LAYOUT-HERE--, null);
view.findViewById(R.id.close_btn).setOnClickListener(this);
customDialogMain.setView(view);
dialog = customDialogMain.show();
return dialog;
}
public void onClick(View v) {
// does something very interesting
switch (v.getId())
{
case R.id.close_btn:
((CustomDialogListener) getActivity()).buttonClicked();
dialog.dismiss();
break;
}
}
}
您可以将此样式直接用于style.xml
<style name="Theme.UserDialog.AppCompat" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowBackground">@android:color/white</item>
<item name="android:minWidth">600dp</item>
</style>
将此样式应用于要设置为警告对话框的活动类
android:theme="@style/Theme.UserDialog.AppCompat"
并使用Intent启动活动
Intent activity= new Intent(this, AlertActivity.class);
startActivity(activity);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.