Comment définir la hauteur de la vue en fonction de la hauteur de l'écran?
View Height Screen Size 32 dp ⤠400 dp 50 dp > 400 dp and ⤠720 dp 90 dp > 720 dp
Actuellement, la hauteur est fixée à 50dp. Je dois définir la hauteur de la vue comme suit:
<View android:id="@+id/myRectangleView" android:layout_width="200dp" android:layout_height="50dp" //view height android:background="@drawable/rectangle"/>
3 Réponses :
Vous pouvez utiliser ceci:
public static int getScreenHeightInDP(Context context) { DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); float screenHeightInDP = displayMetrics.heightPixels / displayMetrics.density; return Math.round(screenHeightInDP); }
Vous pouvez obtenir l'objet de vue LayoutParams, puis définir la hauteur et la largeur pour afficher dynamiquement comme le code ci-dessous:
View view = (View)findViewById(R.id. myRectangleView); LayoutParms layoutParams = view.getLayoutParms(); layoutParms.height = 200; layoutParms.width = 300;
J'ai essayé cette solution dans la mienne. J'espère que c'est OK pour vous.
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Display; import android.view.View; import android.view.ViewGroup; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View view = (View) findViewById(R.id.myRectangleView); ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.height = 500; Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics outMetrics = new DisplayMetrics(); display.getMetrics(outMetrics); float density = getResources().getDisplayMetrics().density; float dpHeight = outMetrics.heightPixels / density; if ((int) dpHeight <= 400) { layoutParams.height = 32; } else if ((int) dpHeight > 400 && dpHeight <= 720) { layoutParams.height = 50; } else if ((int) dpHeight > 720) { layoutParams.height = 90; } } }