【问题标题】:How to set even width for button view which supports in all mobile devices如何为所有移动设备支持的按钮视图设置均匀宽度
【发布时间】:2021-04-06 23:59:10
【问题描述】:

我在 LinearLayout 中以垂直方向以编程方式创建了按钮视图。下面是我的按钮视图代码

LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        int w=Resources.getSystem().getDisplayMetrics().widthPixels;
        params.setMargins(w/3,0,w/3,0);
        button.setLayoutParams(params);
        button.setText("Hello");
        layout.setGravity(Gravity.CENTER);
layout.addView(button);

但由于尺寸 ButtonView 在某些低尺寸设备中看起来不同。 例如。低于低维

 _____
|hello|
|_____|

在高维设备中,

 _____________
|   hello     |
|_____________|

当我尝试为宽度和左、右填充包装内容时。由于 Button 内部文本的长度,所有 ButtonView 看起来都不均匀。 例如。

 _____________
| Hello World |
|_____________|


 _______
| hello |
|_______|

我的目标是为所有设备实现上述(在高维度中提到的)宽度。 提前致谢。

【问题讨论】:

    标签: android uibutton android-linearlayout padding android-button


    【解决方案1】:

    也许您可以使用带有 paddingHorizo​​ntal 值的 wrapContent 作为宽度?

    【讨论】:

    • 可以。但就我而言,我有多个按钮。按钮的每个文本都是不同的。按钮中的一些文本很长,一些很短。因此,所有按钮的填充都不相同。
    【解决方案2】:

    您可以做的另一件事是使用不同的尺寸文件:

    • 在这些文件夹中创建dimens.xml:
      • res/values-ldpi
      • res/values-mdpi
      • res/values-hdpi
      • res/values-xhdpi
      • res/values-xxhdpi
      • res/values-xxxhdpi
    • 在这些文件中为每个密度定义一个按钮大小:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="button_width">200dp</dimen>
    </resources>
    
    • 然后,在您的代码中获取此值:
    int dp = (int) (getResources().getDimension(R.dimen.test) / getResources().getDisplayMetrics().density);
    

    根据this post,你必须将结果除以电话密度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2014-01-07
      • 2015-11-04
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多