【问题标题】:Get Android notification panel width获取 Android 通知面板宽度
【发布时间】:2016-07-20 18:23:32
【问题描述】:

我正在创建一些自定义远程视图,为了将自定义视图和布局绘制到与通知面板一样宽的位图上,我需要它的确切宽度。

由于每个供应商都会更改通知面板的宽度,并且在大多数情况下它会根据方向发生变化,因此很难找到规律的模式。

有没有办法得到它的宽度?

粉红色部分是纯 remoteViews,底部是一个 imageview,我将自定义视图绘制到它上面,因为我没有父宽度,所有子视图都会一起崩溃。

【问题讨论】:

  • 我不知道有任何 API 提供此功能,我会对任何黑客行为持怀疑态度。例如,Chrome OS 上的通知(由 Android 应用程序引发)进入 Chrome OS 通知区域,这与普通 Android 环境中的通知阴影有些不同。
  • 我也有同样的问题
  • 也许您可以为此分享您的代码?
  • 那么你解决了这个问题吗?如何解决的?

标签: android android-notifications android-custom-view remoteview


【解决方案1】:

最简单的方法是使用带有android:orientation="horizontal"android:layout_width="match_parent" 的LinearLayout,并为该布局中的每个视图放置android:layout_weight="1"android:layout_width="0dp"。这意味着该布局中的每个视图都将具有相同的宽度。更多信息你可以阅读here

更新:here 中说通知托盘宽度为 478dp。 所以,尝试一下。也许有些制造商的尺寸不同,但这是一个很好的数字开始:)。

【讨论】:

  • 我需要精确的面板宽度(以像素为单位):)
  • 为什么需要精确的宽度?手动计算视图大小绝不是个好主意。
  • 我需要它来计算我的图像下载任务中的位图大小@Vladimir
  • 您可以在 ImageView 上使用 fitCenter 或cropInside 作为 scaleType,并使用近似值作为图像大小(通知面板的大小不应大于 300dp)
  • 我知道,我的问题是调整大位图的大小,这些位图需要显示该位图的图像视图的确切大小@Vladimir
【解决方案2】:

你可以试试这个来获取宽度并计算你的自定义布局

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

使用宽度来计算您的自定义布局

【讨论】:

  • 我认为,此代码将提供可用屏幕的最大宽度和高度。不是通知面板宽度。
  • 也许this 会回答你的问题。
  • 这绝对不是通知的大小。它会给平板电脑提供错误的尺寸。未来也有保证。
猜你喜欢
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多