Android Custom AlertDialog未正确绘制

时间:2014-07-25 04:39:28

标签: android xml customization android-alertdialog android-custom-view

我试图自定义AlertDialog的外观。问题是,我不知道如何摆脱底部(灰色按钮区域上方)第一个TextView和EditText上方出现的黑线。

enter image description here

这是我的XML。我错过了什么?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@color/butGreyBack"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

      <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="30"
        android:text=""
        android:background="#00000000"
        android:textColor="@android:color/white"
        android:textSize="22sp"        
        android:layout_margin="0dp"     
        android:gravity="center" />

      <TextView
        android:id="@+id/tv_prompt"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="30"
        android:text=""
        android:background="#00000000"
        android:textColor="@android:color/white"
        android:textSize="18sp"        
        android:layout_margin="0dp"     
        android:gravity="center" />

    <EditText
        android:id="@+id/edit_text"
        android:inputType="textCapSentences|textAutoCorrect"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="4dp"/>
</LinearLayout>

这里也是代码 - 这可能是问题所在:

  View alertView;

  AlertDialog.Builder builder = new AlertDialog.Builder( mContext );

  LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
  alertView = inflater.inflate(R.layout.alert_dialog_text, null);

  builder.setView( alertView );

  AlertDialog alertDialog = builder.create();
  alertDialog.setView( alertView, 0,0,0,0 );

  final EditText input = (EditText) alertView.findViewById( R.id.edit_text );
  TextView tvTitle  = (TextView) alertView.findViewById( R.id.tv_title );
  TextView tvPrompt = (TextView) alertView.findViewById( R.id.tv_prompt );

  tvTitle.setText( "Rename Playlist" );
  tvPrompt.setText( "Enter new Playlist name." );

  // Set up the buttons
  builder.setPositiveButton( "OK", new DialogInterface.OnClickListener()
  {
    @Override
    public void onClick( DialogInterface dialog, int which )
    {
      mNewName = input.getText().toString();
    }
  } );

  builder.setNegativeButton( "Cancel", new DialogInterface.OnClickListener()
  {
    @Override
    public void onClick( DialogInterface dialog, int which )
    {
      mNewName = "";
      dialog.cancel();
    }
  } );

  builder.show();

2 个答案:

答案 0 :(得分:1)

... @sparky

1)值文件夹中的xml并添加此代码

包装内容 包装内容 @色/ transparent1 假 真正 并在此对话框中引用此主题

Dialog dialog = new Dialog(activity,R.style.CustomDialogTheme); 然后将您的自定义Dialog Layout Xml文件设置为setContentView。

dialog.setContentView(R.layout.customdialog);

2)你没有在最后关闭父LinearLayout

并且您使用#000000颜色代码进行父布局,这将在背景显示黑色

尝试更改底色颜色代码的机会。并使用

requestWindowFeature(Window.FEATURE_NO_TITLE);

在对话框类中,这将删除对话框标题,因此您的顶部颜色也将删除..

如果您需要任何帮助,请告诉我

由于

答案 1 :(得分:1)

我最后通过实现自己的自定义对话框而不是使用AlertDialog来解决这个问题。