【问题标题】:Set height of the view programmatically on Android在 Android 上以编程方式设置视图的高度
【发布时间】:2019-07-10 06:51:22
【问题描述】:
如何根据屏幕高度设置视图高度?
<View
android:id="@+id/myRectangleView"
android:layout_width="200dp"
android:layout_height="50dp" //view height
android:background="@drawable/rectangle"/>
目前高度设置为 50dp。我需要如下设置视图的高度:
View Height Screen Size
32 dp ≤ 400 dp
50 dp > 400 dp and ≤ 720 dp
90 dp > 720 dp
【问题讨论】:
标签:
java
android
layout
height
【解决方案1】:
你可以使用这个:
public static int getScreenHeightInDP(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float screenHeightInDP = displayMetrics.heightPixels / displayMetrics.density;
return Math.round(screenHeightInDP);
}
【解决方案2】:
您可以获取 View 的 LayoutParams 对象,然后设置 Height 和 Width 以动态查看如下代码:
View view = (View)findViewById(R.id. myRectangleView);
LayoutParms layoutParams = view.getLayoutParms();
layoutParms.height = 200;
layoutParms.width = 300;
【解决方案3】:
我已经尝试过这个解决方案。希望它对你没问题。
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;
}
}
}