2017-05-30 2 views
1

Ich habe eine Snackbar in der Notwendigkeit, seine Höhe oder Höhe einzustellen, um Inhalt zu verpacken. Gibt es irgendeinen Weg?Höhe von Snackbar in Android einstellen

Snackbar snack = Snackbar.make(findViewById(R.id.activity_container), "Message", Snackbar.LENGTH_SHORT); 

View view = snack.getView(); 
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text); 
view.setBackgroundColor(Color.RED); 
tv.setTextColor(Color.WHITE); 
tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 
tv.setGravity(Gravity.CENTER_HORIZONTAL); 
+0

Können Sie eine benutzerdefinierte SnackBar erstellen, indem Sie sie erweitern? – Eenvincible

+0

Ich weiß nicht, wie es geht – user8076850

+0

Kannst du mir helfen? – user8076850

Antwort

2

Wir werden mehrere Antworten geben. Zuerst eine Aussage oder zwei! Sie können die Höhe und Breite einer Snackbar einstellen, aber es ist unordentlich und zeitaufwendig. Eine Erkenntnis über ein Snackbar-Widget ist, dass die meisten Tutorials nicht über Styling sprechen. Die Meinung ist, dass sie nur die Größe sein sollten, die das Widget dir NICHT MEINE ANSICHT gibt. So haben wir festgestellt, dass die Textgröße und Anzahl der maximalen Zeilen eine große Rolle spielt, die Größe einer gut gestylten Snackbar ist. So gestalten Sie Ihre Snackbar und Stil entfernt OK, wie das Chaos Vorschlag implementieren diese Variable nicht THIS declare tun, wo Sie eine andere Variable in Ihrer Aktivität erklären würde

RelativeLayout rl; 

Dann, wenn Sie die Größe Ihrer RelativeLayout erhöhen müssen das ist in der XML-Datei ist aber nicht das Wurzel-Layout in diesem Fall diesen Code verwenden

rl = (RelativeLayout) findViewById(R.id.svRL); 
    rl.getLayoutParams().height = 1480; 

Wenn Sie mit dieser erhöhten Größe getan, das können verwirren mit der Größe des anderen Objekts in dem Wurzel-Layout Sie vielleicht zu setze die Größe des Root-Layouts auf das zurück, was es war. In diesem Fall wurde das root-Layout auf Layouthöhe 615dp eingestellt, wir arbeiten mit einem Nexus 7 Tablet. Wenn Sie dies noch nicht bemerkt haben, ist hier der MESS-Teil, der 1480 in Einheiten von Pixeln ist und Sie brauchen es in dp. Ich bin mir sicher, dass die Konvertierung gemacht werden kann, frag mich einfach nicht. Hier ist also die zurückCodeZeile

rl.getLayoutParams().height = 1230; 

nun für eine einfache Möglichkeit, Design und Stil zwei Arten von Snackbar ist ein mit einer Aktionstaste und eine mit aus. Zuerst müssen Sie einen CoordinatorLayout in was auch immer Aktivität XML-Datei entsprechen, die wie folgt aussieht Hinweis es eine ID hat

 <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/coorSB" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" > 
     <!-- android.support.design.widget.SnackBar --> 

     <!--stuff you want inside the coordinator ... --> 
    </android.support.design.widget.CoordinatorLayout> 

Jetzt sind wir bereit, einige Arbeiten in der Aktivität zu tun, nach einer kleinen erweiterte Zeichenfolge und Farbe Design und Stil Konfiguration. Bitte sei nicht beleidigt. Ich bin sehr gründlich, weil du beim Programmieren sehr neu zu sein scheinst.

Jetzt für den Regenbogen viele Möglichkeiten, um Farbe zu verwalten, das ist meine Mine.

<resources> 
<color name="colorPrimary">#3F51B5</color> 
<color name="colorPrimaryDark">#303f9f</color> 
<color name="colorAccent">#FF4081</color> 
<color name="color_Black">#000000</color> 
<color name="color_White">#FFFFFF</color> 
<color name="color_darkGray">#606060</color> 
<color name="color_lightGray">#C0C0C0</color> 
<color name="color_super_lightGray">#E0E0E0</color> 
<color name="color_Red">#FF0000</color> 
<color name="color_Yellow">#FFFF66</color> 
<color name="color_deepBlue">#0000ff</color> 
<color name="color_lightBlue">#3333FF</color> 
<color name="color_Purple">#9C27B0</color> 
<color name="color_Transparent">@android:color/transparent</color> 

Geschehen mit Housekeeping in Ihrer Aktivität in dem Sie erklären Variablen fügen Sie diese

private CoordinatorLayout myLayout; 
Snackbar sb = null; 

private CoordinatorLayout noActLayout; 
Snackbar sbNoAct = null; 

Es ist hier die Umsetzung der beiden Arten von Snackbars

public void makeNoAct(View view){ 
     // this is declared on a Button android:onClick="makeNoAct" 
    noActLayout = (CoordinatorLayout)findViewById(R.id.coorSB); 

    sbNoAct = Snackbar.make(noActLayout,R.string.the_text,1);// any interger will make it happy 
      sbNoAct.setDuration(3000);// 3 sec    // OR Snackbar.LENGTH_LONG 
                  // matters NOT you are setting duration 
    View sbView = sbNoAct.getView(); 
    sbView.setBackgroundColor(ContextCompat.getColor(this, R.color.color_Black)); 
    TextView textViewNoAct = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
    //set text color 
    textViewNoAct.setTextColor(ContextCompat.getColor(this,R.color.color_Yellow)); 
    textViewNoAct.setMaxLines(10); 
    textViewNoAct.setTextSize(24); 
    //increase max lines of text in snackbar. default is 2. 
    sbNoAct.show(); 

    int height = sbView.getHeight(); 
    etNewData.setText(String.valueOf(height)); 

} 

public void makeCOOR(View view) { 
    // this is declared on a Button android:onClick="makeCOOR" 
    // We were to Lazy to write an OnClickListener 
    myLayout = (CoordinatorLayout) findViewById(R.id.coorSB); 

    sb = Snackbar.make(myLayout, R.string.csb_text, Snackbar.LENGTH_INDEFINITE) 
      .setAction(R.string.csb_action, myOnClickListener) 
      .setActionTextColor(ContextCompat.getColor(context, R.color.color_Red)); 

    View sbView = sb.getView(); 
    sbView.setBackgroundColor(ContextCompat.getColor(this, R.color.color_White)); 
    TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
    //set text color 
    textView.setTextColor(ContextCompat.getColor(this,R.color.color_deepBlue)); 
    textView.setTextSize(30); 
    //increase max lines of text in snackbar. default is 2. 
    textView.setMaxLines(10); 
    // NOTE new View 
    TextView textAction = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_action); 
    //set Action text color 
    textAction.setTextColor(ContextCompat.getColor(this,R.color.color_Red)); 
    textAction.setTextSize(30); 
      sb.show(); 
    } 

    View.OnClickListener myOnClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // OR use and Intent to go somewhere have a nice trip 
      sb.dismiss(); 
      System.out.println("========= I WAS DISMISSED ==============="); 
     } 
    }; 

Genießen Sie die Code und lassen Sie uns mit einem Kommentar wissen, ob dies Ihr Problem löst.