我的按钮布局如下
<Button
android:id="@+id/Button01"
android:layout_width="420px"
android:layout_height="120px"
android:background="@drawable/butt1"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:onClick="clk_fault"
android:text="Enter Fault"
android:textColor="#FFFF00"
android:layout_marginTop="100px"
android:textSize="50px" />
当活动开始时,我运行获取显示宽度的代码,然后根据设备的分辨率调整按钮大小
这一切都运行正常,但文字大小始终保持不变
有没有办法根据包含文字的按钮大小来增加文本大小?
当按钮宽度为420px时,50px非常棒,但如果按钮宽度仅为200px,我需要能够减小文本大小,使其看起来大小相同
任何帮助表示赞赏
标记
修改
要求的活动代码
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
setContentView(R.layout.activity_activity1);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int h = metrics.heightPixels;
int w = metrics.widthPixels;
int w1 = (w/2);
Button txt1 = (Button) findViewById(R.id.Button01);
txt1.setLayoutParams(new LinearLayout.LayoutParams(w1, 100));
setMargins(txt1, 0, 100, 0, 0);
}
public static void setMargins (View v, int left, int top, int right, int bottom) {
if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
p.setMargins(left, top, right, bottom);
v.requestLayout();
}
}
答案 0 :(得分:1)
请不要使用px 。对于小部件大小使用 dp ,对于字体大小使用 sp 这样,您将获得完美的可扩展性。
sp~dp(几乎等于)。
mdpi 分辨率,1px = 1dp。
在ldpi分辨率下,比例乘数为0.75
在 mdpi 分辨率下,比例乘数为 1.0
在hdpi分辨率下,比例乘数为1.5
在xhdpi分辨率下,比例乘数为2.0
在xxhdpi分辨率下,比例乘数为3.0
在xxxhdpi分辨率下,比例乘数为4.0
mdpi 将被视为参考解决方案
使用Java代码时,您使用的是像素 这意味着你必须:
1 - 找到缩放因子为&#34;将它们转换为dp&#34;。
2 - 将您的值乘以此系数。
要查找乘数,我使用以下代码:
final DisplayMetrics metrics =
Resources.getSystem().getDisplayMetrics();
final float scale = metrics.density;
现在,您可以将您的值乘以scale
并相应缩放像素
答案 1 :(得分:0)
首先,文字大小应该是sp和widget&amp; dp中的组件大小。 其次,基于视口大小变化的动态尺寸变化就像在不同设备上一样,需要您为它们创建不同的布局文件,而不是基于视图尺寸进行动态扩展或收缩。