【问题标题】: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;
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-29
          • 1970-01-01
          • 2011-06-10
          • 2019-02-03
          • 2013-09-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多