2016-11-22 4 views
0

Ich habe eine Listview in meinem Dialog und dann muss ich das Layout der Kopfzeile und Fußzeile verwenden. So wie ich es mache, mein Header-Layout nach oben und das Footer-Layout nach unten ausrichten. aber es hat ein Problem. einen Blick auf Bild unten .. Dialog with the list inside with header and footerListview im Dialog mit Kopf- und Fußzeile

Aber, indem Sie, dass der Dialog Längerer in der Größe bekommt, die nicht erwartet wird

ich in dieser Situation traped bin. Nun, wenn ich meine Fußzeile mit dem Ende der Listenansicht ausrichtet, wird die Fußzeile aus dem Bildschirm. was auch nicht erwartet wird.

Was ich will:

  • Ich möchte, dass meine Listenansicht in der Mitte des Dialogs mit dem Header Layout ausrichten oben und die Fußzeile Layout ausrichten auf die bootm des Dialogs sichtbar sein soll am unteren Rand und es sollte nicht die volle Länge des Bildschirms einnehmen.
  • Gibt es keine Möglichkeit, die Fußzeile am unteren Rand des Dialogs auszurichten und den Dialog selbst zu belassen (Hinweis: Ich möchte den Dialog nicht hart codierte Höhe geben, da der Dialog auf allen Geräten gleich aussehen soll .)

Bitte helfen Sie mir in der Situation fest. Wenn wir uns den Google-Dialog ansehen, der während der Installation der App erscheint, hat er einen kurzen Dialog mit der Listenansicht in der Mitte und die Schaltflächen sind am unteren Rand des Dialogs ausgerichtet. Wie machen sie das?

Antwort

0

Sie können wie unten Art und Weise Layout Ihrer Dialog gesetzt

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <TextView android:id="@+id/header_txt" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Header Text" 
     android:gravity="center|top"/> 
    <ListView android:id="@+id/listView" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:gravity="center_vertical/> 
    <TextView android:id="@+id/footer_txt" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Footer Text" 
     android:gravity="center|bottom"/> 
</LinearLayout> 

Es wird gesetzt Header View to Top, ListView to Center und Footer View to Bottom

+0

würde es den Bildschirm nicht die Fußzeile aus herausnehmen, wenn die Listenansicht groß ist? –

+0

@AbdulSalamAli Wenn Ihre Daten groß sind, dann müssen Sie '' '' '' '' '' '''' ''' '' ''' '' '' '' '' '' '' '' '' '' '' '' '' '' definieren. – Ironman

+0

Ja, ich habe es gerade überprüft und die Fußzeile verschwindet aus dem Bildschirm, wenn die Listenansicht zu groß ist. –

0

Diesen kann man versuchen, .. schaffen eine xml und kopieren Sie diesen Code und fügen und stellen Sie Ihren Dialog xml

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 


    <LinearLayout 
     android:paddingBottom="8dp" 
     android:paddingTop="8dp" 
     android:layout_marginTop="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ff0000" 
     android:gravity="center" 
     android:orientation="vertical" 
     > 


     <RelativeLayout 
      android:id="@+id/table_rl" 
      android:padding="10dp" 
      android:layout_width="match_parent" 
      android:layout_weight="1" 
      android:layout_height="0dp" 
      android:orientation="vertical"> 

     <TextView 
      android:id="@+id/your_items_tv" 
      android:textColor="@color/text_black" 
      customFontPath="lato_black.ttf" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:layout_marginTop="20dp" 
      android:text="HEADING" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

      <LinearLayout 
       android:layout_below="@+id/your_items_tv" 
       android:paddingBottom="5dp" 
       android:layout_marginTop="10dp" 
       android:paddingTop="5dp" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 

       <TextView 
        android:textColor="@color/text_black" 
        customFontPath="lato_bold.ttf" 
        android:layout_gravity="center" 
        android:gravity="left" 
        android:layout_width="0dp" 
        android:layout_weight="1" 
        android:layout_height="wrap_content" 
        android:text="TOP BAR"/> 

      </LinearLayout> 
      <ListView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"></LinearLayout> 
     </RelativeLayout> 
     <LinearLayout 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:layout_below="@+id/table_rl" 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#ff00ff"> 

      <TextView 
       android:padding="5dp" 
       android:textSize="18dp" 
       android:textColor="@color/text_black" 
       customFontPath="lato_bold.ttf" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:layout_height="wrap_content" 
       android:text="Bottom Bar "/> 

     </LinearLayout> 


    </LinearLayout> 
</LinearLayout> 

1

Hier ist die dynamische Lösung für Ihr Problem .. Beispieldialog xml file name activity_list_test.xml ..

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

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Header Button" /> 

<ListView 
    android:id="@+id/lvCommon" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" /> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Bottom Button" /></LinearLayout>` 

Hier ist der Anruf von einem Fragment/Aktivität, wo Sie wollen ..

private void showAlert() { 

    AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); 
    View view = LayoutInflater.from(getActivity()).inflate(R.layout.activity_list_test, null); 
    dialog.setView(view); 
    dialog.setTitle(null); 
    dialog.setMessage(null); 

    ArrayList<String> mList = new ArrayList<>(); 
    for (int i = 0; i < 15; i++) { 
     mList.add("ABC"); 
    } 


    ListView lvCommon = (ListView) view.findViewById(R.id.lvCommon); 

    int deviceHeight = getScreenSize(getActivity()).y; 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, deviceHeight/3,1f); 
    lvCommon.setLayoutParams(layoutParams); 
    lvCommon.setAdapter(new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, mList)); 
    dialog.setCancelable(false); 
    dialog.show(); 
} 

Dort Gerät Höhe wird automatisch messen und entsprechend wird die Dialoggröße "deviceheight/3" ..so wird es in allen Geräten erhalten werden ..

Nun müssen Sie die Methode getScreenSize ..so hier ist es ::

public static Point getScreenSize(Activity act) { 
    int screenWidth = 0; 
    int screenHeight = 0; 

    final DisplayMetrics metrics = new DisplayMetrics(); 
    act.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    screenWidth = metrics.widthPixels; 
    screenHeight = metrics.heightPixels; 

    return new Point(screenWidth, screenHeight); 

} 
+0

vielversprechend ,, ich werde versuchen –

Verwandte Themen