【问题标题】:how to set width of button with respect to the resolution available on android device如何根据android设备上可用的分辨率设置按钮的宽度
【发布时间】:2012-09-04 17:53:16
【问题描述】:

我当前的 android 项目要求按钮的宽度应根据设备上可用的分辨率动态设置

我想连续排列 9 个按钮,但大小取决于可用的分辨率

对于我们正在使用的当前场景,下面的代码

    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    //int sheight = displaymetrics.heightPixels;
    int swidth = displaymetrics.widthPixels;
    int px=swidth/11;
    bW.setWidth(px);
    bE.setWidth(px);
    bR.setWidth(px);
    bT.setWidth(px);
    bY.setWidth(px);
    bU.setWidth(px);
    bI.setWidth(px);
    bO.setWidth(px);
    bP.setWidth(px);

按钮的宽度不会以任何方式改变它保持不变

【问题讨论】:

  • 你为什么不直接使用水平的LinearLayout 让操作系统为你定位和调整按钮的大小?
  • 出于某种原因,我在屏幕上设计了 qwerty 键盘,如果操作系统定位并调整按钮的大小,它看起来很奇怪

标签: android android-layout android-widget


【解决方案1】:

如果我认为您的按钮是图像,您使用Selector file 设置,那么您需要将这些文件保存在drawable-hdpidrawable-mdpidrawable-ldpi 中,图像将根据可用的分辨率自行调整。

【讨论】:

  • 这不是真的...... dpi 对应于(近似)像素密度,而不是分辨率。
  • @但分辨率取决于屏幕中这些像素的密度
  • 不,根本不是,除非您说密度与屏幕(物理)尺寸相结合。您可以拥有 800x480 hdpi 设备或 1920x1080 hdpi 设备。完全不同的分辨率但相同的 dpi,一个只会比另一个大。
  • @KumarVivekMitra 你认为这会连续排列所需的九张图片
【解决方案2】:

我认为你应该使用 android:layout_weight 属性。它会根据可用的宽度消耗空间。

将所有按钮设置为 android:layout_weight="1"

试试这个网址

Linear Layout and weight in Android

【讨论】:

  • 如果我这样做,那么它不会将按钮排列成一行,可能会创建另一行
  • 为什么还有一行??假设你有 5 个按钮,在布局上设置 android:weightSum="5" 并在每个按钮上设置 android:layout_weight="1" 。它会自动消耗必要的宽度。
【解决方案3】:

使用 Ninepatch 图像的按钮和其他对象不会比 Ninepatch 本身小。

确保您为按钮使用合适的 Ninepatch 图像,以适合您需要的尺寸。

【讨论】:

  • 我正在搜索按钮.. 意味着我们如何在 android 上以编程方式更改按钮的宽度
【解决方案4】:

我想出了这个解决方案

    ViewGroup.LayoutParams params = button.getLayoutParams();
    params.width=px;
    button.setLayoutParams(params);

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2015-07-30
    相关资源
    最近更新 更多