0

Я хотел настроить андроид диалог, чтобы сделать его похожим на плавающее окно, как показано ниже, который предлагается в https://material.google.com/components/dialogs.html#dialogs-simple-dialogsenter image description hereКак настроить диалоги android для материальной темы?

Я попытался создать DialogFragment, в котором onCreateDialog возвращает диалог с целью корень которого является CardView.But не могло Получите ожидаемый результат. Могу ли я предложить некоторые рекомендации о том, как достичь этого?

Мой макет выглядит так,

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    android:layout_gravity="center|top" 
 
    card_view:cardElevation="5dp" 
 
    card_view:cardPreventCornerOverlap="false"> 
 
    //Contents come here 
 
    
 
</android.support.v7.widget.CardView>

и в коде,

public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = new Dialog(getActivity()); 
     View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_font_selection,null,false); 

     dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(view); 
     float width = (I am getting screen width here) * .80f; 
     dialog.getWindow().setLayout((int) width, ViewGroup.LayoutParams.WRAP_CONTENT); 
     return dialog; 
    }` 

, но результат выглядит так, Вместо того, чтобы высоты я получаю черный оттенок enter image description here

+0

разместить свой код для большего понимания –

+0

@MohitMadaan редактировал вопрос – user3665376

+0

Какое устройство вы работаете? – Shark

ответ

0
AlertDialog.Builder mydialog = new AlertDialog.Builder(context); 
mydialog.setTitle("Set backup accounts"); 
mydialog.setItems(CharSequence[] items, OnClickListener); 
mydialog.show(); 
mydialog.setContentView(R.layout.mydialogLayout); 

Это в вашей деятельности/фрагменте. И объявите макет следующим образом:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center_horizontal"> 

    <TextView 
     android:id="@+id/myID1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

После этого, если вы хотите обрабатывать клики только сделать это:

TextView myView1 = (TextView) mydialog.findViewById(myID1); 
myView1.setOnClickListener(...); 
+0

Спасибо за ответ. Я пробовал это, но получил что-то вроде диалога с эффектом высоты, но вокруг него был белый оттенок (несколько пикселей в ширину). – user3665376

+0

так измените на: mydialog = new AlertDialog. Builder (контекст) ... mydialog.setContentView (R.style.MyAlertDialoh); // не забудьте вызвать это после метода .show() –

+0

Спасибо .. Может ли метод setContentView взять ресурс стиля ... Вы имеете в виду то же самое? – user3665376