13

Umarım bir sorunla bana yardımcı olabilirsiniz. Google'a bakmaya çalıştım ve buradaki konulara baktım, ancak bir cevap bulamadı.Bir DialogFragment içinde ConstraintLayout Gösterme

Son zamanlarda düzenlerimi ConstraintLayouts olarak değiştirdim ve bu şu ana kadar harika çalışıyor. Benim sorunum ancak LinearLayout görüntüleyen bazı DialogFragments vardı ve ben ConstraintLayout için değiştirdiğimde sadece düzen içinde öğeleri olmayan bir soluk bindirme gösterir. Genişliği ve yüksekliği 100dp gibi bir şeye şifrelerseniz, o alanı gösterir. match_parent'u veya başka bir kombinasyonu denediğimde aynı sorun geçerlidir. Cihazın yüksekliğini ve genişliğini cihaz yüksekliğine ve genişliğine ayarlamaya çalıştım ama yine de şanssız kaldım. onCreateView yılında

benim CreateWeddingMetadataFragment i var:

Benim CreateWeddingMetadataFragmentDialog olarak
createButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d(TAG, "Show message dialog"); 

      FragmentManager fm = getFragmentManager(); 
      CreateWeddingMetadataDialogFragment welcomeMessageDialog = new CreateWeddingMetadataDialogFragment(); 
      welcomeMessageDialog.show(fm, "metadate_fragment_dialog"); 
      welcomeMessageDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
       @Override 
       public void onDismiss(DialogInterface dialog) { 
       } 
      }); 

i var:

public class CreateWeddingMetadataDialogFragment extends DialogFragment{ 

private static final String TAG = CreateWeddingMetadataDialogFragment.class.getSimpleName(); 

public Button setupNow, setupLater; 
public TextView mTest; 
public ConstraintLayout parentLayout; 

private DialogInterface.OnDismissListener onDismissListener; 



public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) { 
    this.onDismissListener = onDismissListener; 
} 

@Override 
public void onDismiss(DialogInterface dialog) { 
    super.onDismiss(dialog); 
    if (onDismissListener != null) { 
     onDismissListener.onDismiss(dialog); 
    } 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "I was called"); 
} 

public CreateWeddingMetadataDialogFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.create_welcome_message_view, container); 

    setupNow = (Button) view.findViewById(R.id.setupNowButton); 
    setupLater = (Button) view.findViewById(R.id.setupLaterButton); 
    mTest = (TextView) view.findViewById(R.id.welcomeMessageTitle); 
    parentLayout = (ConstraintLayout) view.findViewById(R.id.clWelcomeMessage); 

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); 
    int width = displayMetrics.widthPixels; 
    int height = displayMetrics.heightPixels; 

    parentLayout.setMinimumWidth(width); 
    parentLayout.setMinimumHeight(height); 

    mTest.setText("Test"); 
    Log.d(TAG, "I was called onCreateView" + mTest); 

    setupNow.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Go to metadate page (Hide this dialog) 
     } 
    }); 

    setupLater.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Go to signin page and create the wedding 
     } 
    }); 


    return view; 
} 

} cihaza ayar benim şimdiki denemede ile

boyut. Burada

Ve

create_welcome_message_view geçerli:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
             xmlns:app="http://schemas.android.com/apk/res-auto" 
             android:layout_width="match_parent" 
             android:layout_height="match_parent" 
             xmlns:tools="http://schemas.android.com/tools" 
             android:orientation="vertical" 
             android:id="@+id/clWelcomeMessage"> 



<Button 
    android:text="DET GØR JEG SENERE" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/setupLaterButton" 
    app:layout_constraintTop_toTopOf="@+id/guideline19" 
    app:layout_constraintBottom_toTopOf="@+id/guideline20" 
    android:layout_marginEnd="16dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="16dp" 
    android:layout_marginStart="16dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="16dp" 
    android:background="@drawable/border" 
    android:layout_marginTop="2dp" 
    android:textColor="@color/colorPrimaryDark"/> 

<Button 
    android:text="JEG VIL OPSÆTTE DEN NU" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/setupNowButton" 
    app:layout_constraintTop_toTopOf="@+id/guideline12" 
    app:layout_constraintBottom_toTopOf="@+id/guideline19" 
    android:layout_marginEnd="16dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="16dp" 
    android:layout_marginStart="16dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="16dp" 
    android:background="@color/colorPrimaryDark" 
    android:layout_marginBottom="2dp" 
    android:textColor="@color/White"/> 

<TextView 
    android:text="EN PERSONLIG VELKOMST" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/welcomeMessageTitle" 
    android:layout_marginTop="16dp" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginEnd="32dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="32dp" 
    android:layout_marginStart="32dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="32dp" 
    app:layout_constraintBottom_toTopOf="@+id/textView5" 
    android:layout_marginBottom="8dp" 
    android:textAlignment="center" 
    android:textSize="16sp"/> 

<TextView 
    android:text="Nu skal I definere den velkomst, som jeres gæster får i appen. I kan skrive navnet på brylluppet, en hlsen og har mulighed at vælge et coverbillede" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/textView5" 
    app:layout_constraintTop_toTopOf="@+id/guideline14" 
    android:layout_marginEnd="32dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="32dp" 
    app:layout_constraintBottom_toTopOf="@+id/textView6" 
    android:layout_marginBottom="8dp" 
    android:layout_marginStart="32dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="32dp" 
    android:textAlignment="center"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline12" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="204dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.4"/> 

<TextView 
    android:text="Du vil altid kunne ændre din opsætning af velkomsten i din brugerprofil." 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/textView6" 
    app:layout_constraintBottom_toTopOf="@+id/guideline12" 
    android:layout_marginBottom="8dp" 
    app:layout_constraintTop_toTopOf="@+id/guideline15" 
    android:layout_marginStart="32dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="32dp" 
    android:layout_marginEnd="32dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="32dp" 
    android:textAlignment="center" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintVertical_bias="1.0"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline14" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="51dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.1"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline15" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="153dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.3"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline19" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="255dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.5"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline20" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="305dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.6"/> 

</android.support.constraint.ConstraintLayout> 

herhangi bir ek bilgi bana bildirin ve şimdiden teşekkürler gerekir.

+0

Eminim ConstraintLayout ile ilgili bir hata. Düzeninizi FrameLayout'ta sarmalayabilir ve ConstraintLayout için sabit boyut ayarlayabilirsiniz - görünümü görüntülenir. – Outofdate

cevap

1

Bu iyi çalışır -

1 kontrol) gösterildiği gibidir Onun iyi uygulama mümkünse XML çok sırayla öğeleri düzenlemek için. Sadece daha sonra anlamak için. 2) Diğer bütün elementler kendisini diğerlerinin boy ve genişliklerine göre sınırlandırıyor ve çoğunlukla 0 yükseklik ve genişlikte sonuçlanıyor. LayoutParams'da 0dp ve wrap_content için dikkat edin. 3) Dikey Önyargı desteğini de alın.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
android:id="@+id/clWelcomeMessage" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

<android.support.constraint.Guideline 
    android:id="@+id/guideline_ver_16" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    app:layout_constraintGuide_begin="@dimen/sixteenDP"/> 
<android.support.constraint.Guideline 
    android:id="@+id/guideline_ver_end_16" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    app:layout_constraintGuide_end="@dimen/sixteenDP"/> 

<TextView 
    android:id="@+id/welcomeMessageTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="32dp" 
    android:layout_marginLeft="32dp" 
    android:layout_marginRight="32dp" 
    android:layout_marginStart="32dp" 
    android:layout_marginTop="16dp" 
    android:text="EN PERSONLIG VELKOMST" 
    android:textAlignment="center" 
    android:textSize="16sp" 
    app:layout_constraintBottom_toTopOf="@+id/textView5" 
    app:layout_constraintHorizontal_bias="0.5" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent"/> 

<android.support.constraint.Guideline 
android:id="@+id/guideline1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
app:layout_constraintGuide_percent="0.1"/> 
<android.support.constraint.Guideline 
android:id="@+id/guideline2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
app:layout_constraintGuide_percent="0.2"/> 

<TextView 
android:id="@+id/textView5" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_marginBottom="8dp" 
android:text="Nu skal I definere den velkomst, som jeres gæster får i 
appen. 
I kan skrive navnet på brylluppet, en hlsen og har mulighed at vælge et 
coverbillede" 
android:textAlignment="center" 
app:layout_constraintEnd_toEndOf="@+id/guideline_ver_end_16" 
app:layout_constraintHorizontal_bias="0.5" 
app:layout_constraintStart_toStartOf="@+id/guideline_ver_16" 
app:layout_constraintTop_toBottomOf="@+id/guideline2"/> 

<TextView 
android:id="@+id/textView6" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_marginBottom="8dp" 
android:layout_marginEnd="16dp" 
android:layout_marginLeft="16dp" 
android:layout_marginRight="16dp" 
android:layout_marginStart="16dp" 
android:layout_marginTop="8dp" 
android:text="Du vil altid kunne ændre din opsætning af velkomsten i din 
brugerprofil." 
android:textAlignment="center" 
app:layout_constraintBottom_toTopOf="@+id/setupNowButton" 
app:layout_constraintHorizontal_bias="0.0" 
app:layout_constraintLeft_toLeftOf="@+id/guideline_ver_16" 
app:layout_constraintRight_toRightOf="@+id/guideline_ver_end_16" 
app:layout_constraintTop_toBottomOf="@+id/textView5"/> 

<Button 
android:id="@+id/setupNowButton" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_marginBottom="8dp" 
android:layout_marginEnd="16dp" 
android:layout_marginLeft="16dp" 
android:layout_marginRight="16dp" 
android:layout_marginStart="16dp" 
android:layout_marginTop="8dp" 
android:background="@color/colorPrimaryDark" 
android:text="JEG VIL OPSÆTTE DEN NU" 
android:textColor="@color/White" 
app:layout_constraintBottom_toTopOf="@+id/setupLaterButton" 
app:layout_constraintHorizontal_bias="0.0" 
app:layout_constraintLeft_toLeftOf="parent" 
app:layout_constraintRight_toRightOf="parent" 
app:layout_constraintTop_toBottomOf="@+id/textView6" 
app:layout_constraintVertical_bias="1.0"/> 


<android.support.constraint.Guideline 
android:id="@+id/guideline6" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
app:layout_constraintGuide_percent="0.6"/> 

<Button 
    android:id="@+id/setupLaterButton" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="16dp" 
    android:layout_marginLeft="16dp" 
    android:layout_marginRight="16dp" 
    android:layout_marginStart="16dp" 
    android:text="DET GØR JEG SENERE" 
    android:background="@drawable/border" 
    android:textColor="@color/colorPrimaryDark" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.5" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="@+id/guideline6" 
    app:layout_constraintVertical_bias="1.0"/> 

</android.support.constraint.ConstraintLayout> 

Ayrıca app:layout_constraintWidth_default="wrap" ile (genişlik grubu 0DP için). Eğer ayarlanırsa, widget wrap_content kullanıyormuşçasına aynı büyüklüğe sahip olacak, ancak kısıtlamalarla sınırlanacaktır (yani, bunların ötesine geçmeyecek). Supporting resource

+0

Hey. Cevap için teşekkürler. Bu, kısıtlama düzenlerinin geçerli sürümünde (o anda) bir hataydı. –

İlgili konular