2

カスタムダイアログボックスを作成しようとしています

LayoutInflater li = LayoutInflater.from(this);
        View view = li.inflate(R.layout.rate_layout, null);

        RelativeLayout rate = (RelativeLayout) view.findViewById(R.id.rateClick);
        RelativeLayout close = (RelativeLayout) view.findViewById(R.id.closeBtn);
        close.setClickable(true);
        rate.setClickable(true);    

       final AlertDialog.Builder  dd = new AlertDialog.Builder(this);          
       dd.setView(view);
       dd.setCancelable(false);

       final AlertDialog d = dd.create();
       d.show();

背景画像には4種類の解像度があるので、私wrap contentしかできません。

これが私のxmlファイルです

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >



  <RelativeLayout
        android:id="@+id/rateClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="@drawable/rate_now_button" />

  <RelativeLayout
      android:id="@+id/imageView1"
      android:layout_width="219dp"
      android:layout_height="234dp"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      android:background="@drawable/pop_up" >

      <RelativeLayout
          android:id="@+id/closeBtn"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
          android:layout_alignParentTop="true"
          android:background="@drawable/close_button" >
      </RelativeLayout>

       <RelativeLayout
        android:id="@+id/rateClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:background="@drawable/rate_now_button" />

  </RelativeLayout>

</RelativeLayout>

これが私が得ているものです。ダイアログレイアウトを削除するにはどうすればよいですか。白い大きな境界線。

私の画像

4

6 に答える 6

5

AlertDialog.Builderは使用しないでください。代わりにこれを試してください。

Dialog d = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);

また

Dialog d = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);

基準を満たすテーマを使用することも、独自のテーマを作成することもできます。この質問この他の質問への回答を参照してください。利用可能なテーマも参照してください。

setContentView()、setCancelable()、show()、およびその他の役立つと思われるメソッドのドキュメントについては、 Dialogを参照してください。

于 2012-09-14T04:28:32.767 に答える
5

あなたが試すことができます:

myDialog.show();
Window window = myDialog.getWindow();
window.setLayout(300, 300);
于 2014-04-15T21:49:02.907 に答える
3
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
Double width = metrics.widthPixels*.7;
Double height = metrics.heightPixels*.7;
Window win = dialog.getWindow();
win.setLayout(width.intValue(), height.intValue());
于 2015-10-22T07:09:34.457 に答える
0

次のようなものを試してください。

    dialog_item = new Dialog(Pre_Venda_Digitacao_2.this);
    dialog_item.setContentView(R.layout.layout_pre_venda_digitacao_add_produto);
    Util.softKeyboard(dialog_item.getWindow(), false);

    // Recuperar os componentes da janela e disponibilizar para as variáveis globais.
    dialog_Item_getComponentes();

    /***********************OnShow do Dialog*****************************/
    dialog_item.setOnShowListener(new OnShowListener() {
        @Override
        public void onShow(DialogInterface dialog) {
            //Recupera a menor fonte dentro do layout passado
            float lower_font_size = AutoResizeTextView_Functions.Get_Lower_Font_Size(ll_add_produto, 1000);

            //Seta menor fonte recuparada anteriormente para os textos do layout passado
            AutoResizeTextView_Functions.Resize_Text(ll_add_produto, lower_font_size);
        }
    });

    dialog_item.setOnDismissListener(new OnDismissListener() {

        @Override
        public void onDismiss(DialogInterface dialog) {
            dialog_item = null;
            preVenda_Item = null;
        }
    });

    Display display = getWindowManager().getDefaultDisplay(); 
    int width       = display.getWidth();

    lp = new WindowManager.LayoutParams();
    lp.copyFrom(dialog_item.getWindow().getAttributes());
    lp.width = (int) (width - (width * 0.07) );  //Tira 7% da largura total da tela para deixar um espaço na janela
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;

    dialog_item.getWindow().setAttributes(lp);

    dialog_item.show();
于 2012-09-14T15:05:52.270 に答える
0

あなたの中でこれを行うrate_layout.xml

<!-- begin snippet: js hide: false -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#0000"
>

作成しなかった場合は、ダイアログフラグメントを作成して呼び出す必要もあります。

public class AddDialog extends DialogFragment
{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        LayoutInflater inflater = getActivity().getLayoutInflater();

        builder.setView(inflater.inflate(R.layout.rate_layout, null));
        return builder.create();
    }
}

次にDialog、関数でを呼び出します。

public void SomeFunction()
{
    DialogFragment d = new AddDialog();
    d.show(getSupportFragmentManager(), "some_dialog_refrence");
}
于 2014-09-23T18:50:35.803 に答える
0

このようにカスタムダイアログの幅、高さを設定できます。

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenHeight = displayMetrics.heightPixels;
int screenWidth = displayMetrics.widthPixels;

android.view.WindowManager.LayoutParams lp = new android.view.WindowManager.LayoutParams();
        lp.copyFrom(deleteDialog.getWindow().getAttributes());

// If we need to set background color of activity
// We need to set this before calling show() method
lp.dimAmount = 0.7f;    
deleteDialog.getWindow().setAttributes(lp); 
deleteDialog.show();

// we need to set width, height after calling show() method
Window window = deleteDialog.getWindow();
window.setLayout(screenWidth - screenWidth/2), WindowManager.LayoutParams.WRAP_CONTENT);
于 2017-11-29T09:44:37.753 に答える