2016-07-27 8 views
0

Ich möchte Schaltflächen dynamisch nach verschiedenen Bildschirmgrößen hinzufügen. Wie kann ich es erreichen?7 Tasten dynamisch hinzufügen, um alle Bildschirmgrößen auf seine Breite und Höhe in Android anzupassen

Das habe ich ausprobiert. Aber wenn ich die erste Taste von WRAP_CONTENT auf statische Höhe, Breite keiner der Taste ändern wird auf dem Bildschirm angezeigt

public void setButtons(){ 
    // button one params 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
    params.setMargins(380,433,10,20); 

    LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(getMyNewX(76),getMyNewX(76)); 
    params1.setMargins(229,-45,50,20); 

    LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(getMyNewX(76),getMyNewX(76)); 
    params2.setMargins(239,60,10,20); 

    LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(getMyNewX(76),getMyNewX(76)); 
    params3.setMargins(422,-45,10,20); 

    LinearLayout.LayoutParams params4 = new LinearLayout.LayoutParams(getMyNewX(76),getMyNewX(76)); 
    params4.setMargins(592,-455,10,20); 

    LinearLayout.LayoutParams params5 = new LinearLayout.LayoutParams(getMyNewX(76),getMyNewX(76)); 
    params5.setMargins(592,65,10,20); 

    // LinearLayout.LayoutParams params6 = new LinearLayout.LayoutParams(76,76); 
    //  params6.setMargins(592,-275,10,20); 

    LinearLayout layout = new LinearLayout(getApplicationContext()); 

    layout.setOrientation(LinearLayout.VERTICAL); 
    layout.setLayoutParams(params); 
    Button button1 = new Button(getApplicationContext()); 
    button1.setLayoutParams(params); 
    // button1.setText("like"); 
    button1.setBackgroundDrawable(getResources().getDrawable(R.drawable.like)); 
    // button1.setBackgroundColor(Color.TRANSPARENT); 

    Button button2 = new Button(getApplicationContext()); 
    button2.setLayoutParams(params1); 
    // button2.setText("share"); 
    button2.setBackgroundDrawable(getResources().getDrawable(R.drawable.share)); 
    //  button2.setBackgroundColor(Color.TRANSPARENT); 

    Button button3 = new Button(getApplicationContext()); 
    button3.setLayoutParams(params2); 
    // button3.setText("mute"); 
    button3.setBackgroundDrawable(getResources().getDrawable(R.drawable.mute)); 
    //  button3.setBackgroundColor(Color.TRANSPARENT); 

    Button button4 = new Button(getApplicationContext()); 
    button4.setLayoutParams(params3); 
button4.setBackgroundDrawable(getResources().getDrawable(R.drawable.download)); 


    Button button5 = new Button(getApplicationContext()); 
    button5.setLayoutParams(params4); 
    button5.setBackgroundColor(Color.TRANSPARENT); 


    Button button6 = new Button(getApplicationContext()); 
    button6.setLayoutParams(params5); 
    button6.setBackgroundColor(Color.TRANSPARENT); 


    layout.addView(button1); 
    layout.addView(button2); 
    layout.addView(button3); 
    layout.addView(button4); 
    layout.addView(button5); 
    layout.addView(button6); 

    buttonLayout.addView(layout); 

} 

originalWidth = 1100; 
    originalHeight = 2050; 

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


} 


int getMyNewX(int originalX) 
{ 
    //originalX : x for line segment 
    return width/originalWidth * originalX; 
} 
int getMyNewY(int originalY) 
{ 
    //originalY : y for line segment 
    return height/originalHeight * originalY; 
} 
+1

Verwenden Sie Gewicht von linearlayout – Nisarg

+0

wie und wo es zu verwenden? –

+0

Bitte fügen Sie mehr Kontext zu Ihrer Frage hinzu. Warum müssen Sie diese Schaltflächen dynamisch und nicht im XML-Code hinzufügen? –

Antwort

0

können Sie fügen Gewicht dynamisch auf diese Weise

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); 
params.weight = 1.0f; 
Button button = new Button(this); 
button.setLayoutParams(params); 
+0

immer noch nur eine Taste –

+0

Sie müssen nach Ihrer Anforderung festlegen –

0

In Android Studio

res -> values -> dimens.xml 

enter image description here

Ihre Abmessungen für Geräte erklären unter w820dp in dimens.xml Datei

enter image description here

Dimension für Geräte w820dp und oben in dimens.xml (w820dp)

enter image description here

verwenden Sie es dann in Ihrem Code wie

Datei enter image description here

Android wählt automatisch erfordern d Größen für unterschiedliche Auflösungen

**w820dp - for screens with more than 820dp of available width. This 
     would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).** 

this may also help you

0

Es gibt zwei Lösung.

Lösung 1: convert dp

private int convertPxToDp(int px){ 
return Math.round(px/(Resources.getSystem().getDisplayMetrics().xdpi /DisplayMetrics.DENSITY_DEFAULT)); 
} 

Jetzt haben Sie für alle Bildschirmgröße dynamischen Wert von Pixel Pixel.

Lösung 2: dann

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, 0);

sonst

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 0, LayoutParams.WRAP_CONTENT);

hinzufügen Gewicht auf alle Ihre Taste

Wenn es vertikale Ausrichtung und dann

params.weight = 1.0f; 
Button button = new Button(this); 
button.setLayoutParams(params); 
0

Sie müssen layoutparams mit der Eigenschaft wght verwenden, um die Breite gleichmäßig zu fixieren. Finden Sie unter dem Code.

private void initViews() { 
    lytButtons = (LinearLayout) findViewById(R.id.lytButtons); 
    btnAddButtons = (Button) findViewById(R.id.btnAddButtons); 

    btnAddButtons.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      addButtons(); 
     } 
    }); 
} 

protected void addButtons() { 
    try { 
     Button btn1 = createButton("Btn 1"); 
     Button btn2 = createButton("Btn 2"); 
     Button btn3 = createButton("Btn 3"); 
     Button btn4 = createButton("Btn 4"); 
     Button btn5 = createButton("Btn 5"); 
     Button btn6 = createButton("Btn 6"); 


     lytButtons.addView(btn1); 
     lytButtons.addView(btn2); 
     lytButtons.addView(btn3); 
     lytButtons.addView(btn4); 
     lytButtons.addView(btn5); 
     lytButtons.addView(btn6); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Button createButton(String text) { 

    Button btn = new Button(getActivity()); 
    btn.setText(text); 
    LinearLayout.LayoutParams prm1 = new LinearLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    prm1.weight = 1.0f; 
    btn.setLayoutParams(prm1); 

    return btn; 
} 
Verwandte Themen