【问题标题】:Android, add view with height in percentageAndroid,以百分比添加高度的视图
【发布时间】:2017-08-31 19:26:22
【问题描述】:

我想向父视图添加一个宽度为 100% 和 X%(例如:让它变为 40%)的视图

我有这个:

private RelativeLayout getParentView(){
    return (RelativeLayout) MyActivity.this.getWindow().getDecorView().getRootView();
}

我应该将父视图转换为 LinearLayout 或 RelativeLayout 可以实现吗?

以及如何以编程方式设置“myView”的宽度和高度?

谢谢

【问题讨论】:

  • AFAIK 你只能用线性布局和重量来做到这一点。将 weight-sum 设置为 1 并将子视图的高度/宽度设置为 0.x%
  • 我不想在 XML 中仅以编程方式执行此操作,
  • 首先,我应该向父视图添加线性布局?然后将 myView 添加到 LinearLayout ?

标签: java android user-interface android-view android-relativelayout


【解决方案1】:

你可以通过简单地获取屏幕宽度来做到这一点

  public static int getScreenWidth(Context context) {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    return displayMetrics.widthPixels;
}

将其乘以百分比并给出要查看的参数,如下所示:

//For 40% height according to the screen width.
view.getLayoutParams().height = (int) (getScreenWidth(mContext) * 0.40);

希望这会有所帮助。

【讨论】:

  • 你想说getScreenHeight
  • 两种方式都可以计算。假设我想将我的屏幕分成 2 个相等的部分,然后我将使用 return displayMetrics.heightPixels 并给出高度 * 0.5。上面的代码用于在遇到不同宽度的设备时保持视图的纵横比,并且您希望拥有相同纵横比的视图。
【解决方案2】:
private static void updateDimen(Activity activity){
    DisplayMetrics displayMetrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    screenHeight = displayMetrics.heightPixels;
    screenWidth = displayMetrics.widthPixels;
}

使用上面的代码获取屏幕高度和屏幕宽度。

然后获取你的 Layout 的实例,获取它的 LayoutParams 实例并更新维度

params.height = screenHeight * 0.6;
params.width = screenWidth * 0.6;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2017-07-22
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多