2017-05-30 18 views
1

私はコンテンツをラップするために高さや高さを設定する必要があるスナックバーを持っています。何か方法はありますか?Androidのスナックバーの高さを設定する

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

カスタムSnackBarを拡張して作成できますか? – Eenvincible

+0

私はそれを行う方法がわかりません – user8076850

+0

あなたを助けることができます – user8076850

答えて

2

複数の回答を提供します。最初に1つまたは2つのステートメント! Snackbarの高さと幅を設定することはできますが、時間がかかります。 ほとんどのチュートリアルでは、スタイリングについて話しません。意見は、ウィジェットがあなたに私の見解を与えないサイズでなければならないということです。だから我々は、テキストのサイズと最大ラインの数がBIGロールを果たしていることがよく書かれたSnackbarのサイズであることに気付いた。だからあなたのスナックバーを設計し、スタイル離れ OK、あなたのRelativeLayoutのサイズを大きくする必要があるときに

RelativeLayout rl; 

次に、あなたの活動に他の変数を宣言し、この変数をTHIS宣言をしない混乱の提案を実装する方法それはあなたのXMLファイルであるが、あなたがルートレイアウト内の他のオブジェクトのサイズと混乱は、あなたがしたい場合がありますすることができ、このサイズの増加を成し遂げるときにこのコード

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

を使用し、この場合には、ルートレイアウトではありませんルートレイアウトのサイズを元に戻します。この場合、ルートレイアウトはレイアウトの高さ615dpに設定されており、Nexus 7タブレットを使用しています。あなたがこれに気づいていないなら、1480はピクセルの単位であり、あなたはdpでそれを必要とするMESS部分です。私は変換が行われていると確信しているだけで私に尋ねないでください。そこでここではアクションボタンとアウトと1とスナックバーの1の2種類のデザインとスタイルするための簡単な方法のためのコード

rl.getLayoutParams().height = 1230; 

の裏設定行があります。まず、あなたは今までの活動が、このようなXMLファイルを対応するものでCoordinatorLayoutを必要とし、それが今、私たちは少し高度な文字列や色後デザインとスタイルするために活動中でいくつかの作業を行う準備ができているID

 <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> 

を持っていますセットアップ。私は非常に徹底的になっています。あなたがプログラミングに新しいことがあるように思われるからです。

<string name="snackbar_text">I Am a NEW SnackBAR TEXT</string> 
<string name="snackbar_action">EXIT</string> 
<string name="second_text">Second Text</string> 
<string name="csb_text">I am the Custom Guy</string> 
<string name="csb_action">EXIT</string> 
<string name="the_text">Password must have one Numeric Value\n" 
"One Upper &amp; Lower Case Letters\n" 
"One Special Character $ @ ! % * ? &amp;\n" 
"NO Spaces in the PASSWORD"</string> 

虹のために今色を管理する多くの方法これは私の鉱山です。あなたは変数がここにあります。この

private CoordinatorLayout myLayout; 
Snackbar sb = null; 

private CoordinatorLayout noActLayout; 
Snackbar sbNoAct = null; 

追加宣言するあなたの活動にハウスキーピングを完了

<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> 

お楽しみ

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 ==============="); 
     } 
    }; 

スナックバー

の両方のタイプの実装でありますこの問題が解決された場合は、コメントを付けてお知らせください。

関連する問題