【问题标题】:How can we set height and width dp for imageview in android?我们如何在android中为imageview设置高度和宽度dp?
【发布时间】:2014-01-23 18:54:12
【问题描述】:

我想在dp 中为ImageView 在android 中务实地设置高度和宽度。

我怎样才能做到这一点?

【问题讨论】:

标签: android imageview


【解决方案1】:

试试这个:

image_view.getLayoutParams().height = 20;
image_view.getLayoutParams().width= 20;

如果可以接受,请给我您的反馈。这对我有用。

【讨论】:

    【解决方案2】:

    用 dp 设置宽度和高度:

    imageview.getLayoutParams().height = (int) getResources().getDimension(R.dimen.imageview_height);
    imageview.getLayoutParams().width = (int) getResources().getDimension(R.dimen.imageview_width);
    

    在您的 dimens.xml 中为键提供值:

    <dimen name="imageview_width">50dp</dimen> 
    <dimen name="imageview_height">50dp</dimen> 
    

    【讨论】:

    • 感谢 Andros,但我在尝试实现这个时遇到不兼容的类型错误如何解决它,或者我在这里遗漏了一些东西..
    • 老兄的答案很好。
    【解决方案3】:

    这可能对你有帮助……

    ImageView im = (ImageView)findViewById(R.id.image1);
    LayoutParams params = im.getLayoutParams();
    params.height = 100;
    params.width = 100;
    

    【讨论】:

    • DisplayMetrics 指标 = getWindowManager().getDefaultDisplay().getMetrics(metrics);浮动逻辑密度=度量.密度; int px = (int) (dp * logicalDensity + 0.5);这可能有助于您将像素转换为 dp
    • Lalith 是否 0.5 是所有设备的共同因素,否则会有所不同..
    • 如果该答案满足您的问题,请选择正确的答案
    【解决方案4】:

    使用显示指标来获取销售因素,然后只是一些简单的数学运算 - 例如,如果我想要 200x150dp:

    final float scale = getResources().getDisplayMetrics().density;
    int dpWidthInPx  = (int) (200 * scale);
    int dpHeightInPx = (int) (150 * scale);
    

    然后设置图像视图大小:

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(dpWidthInPx, dpHeightInPx);
    imageView.setLayoutParams(layoutParams);
    

    【讨论】:

      【解决方案5】:

      这可能更简单,应该可以解决问题:

      ImageView im = (ImageView)findViewById(R.id.image1);
      LayoutParams params = im.getLayoutParams();
      params.height = getActivity().getResources().getDimensionPixelSize(R.dimen.item_height);
      params.width = getActivity().getResources().getDimensionPixelSize(R.dimen.item_width);
      

      在你的dimens.xml中

      <dimen name="item_height">80dp</dimen> 
      <dimen name="item_width">80dp</dimen> 
      

      【讨论】:

      • 为什么说“更简单”?我看不出这有任何整洁或简单...
      【解决方案6】:
      1. 首先选择一个理想的倾角并将其分配给一个变量。

      int dipAmount=350;

      1. 然后读取 ImageView 的高度。

      float scale = imageview.Resource.DisplayMetrics.Density;

      1. 从 px 转换为 dip。

      int converter =(int) (350 * scale + 0.5f);

      1. 将高度设置为 imageview。

      imageView.LayoutParameters.Height=converter;

      【讨论】:

        【解决方案7】:
         final float scale = getContext().getResources().getDisplayMetrics().density;
        int height_ = (int) (250 * scale + 0.5f);
        int width_ = (int) (250 * scale + 0.5f);
        

        250 在 dp 中

        ViewGroup.LayoutParams params = ImageView.getLayoutParams();
        params.height = height_;
        params.width = width_;
        
        ImageView.setLayoutParams(params);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-06
          • 2011-07-12
          • 1970-01-01
          • 2014-08-22
          • 2023-04-04
          • 1970-01-01
          • 2023-03-18
          相关资源
          最近更新 更多