错误值时得到的大小 button 中android

发布时间: 2016/10/10 21:48:59
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 button ,定大小 (dp) XML 文件,如下所示︰

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >

    <FrameLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="0dp"
        android:layout_marginRight="0dp"
        android:layout_marginTop="80dp"
        android:layout_marginBottom="80dp"
        android:layout_centerInParent="true"
        >

        <Button
            android:id="@+id/btn1"
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:scaleType="fitCenter"/>

        <Button
            android:id="@+id/btn2"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:scaleType="fitCenter"/>
    </FrameLayout>
</RelativeLayout>

我跟着在答案getWidth() 和 getHeight() 的 View 返回 0以获取大小的 button 。然而,它返回一个错误值 300,300 而不是 10dp 和 50dp。什么是发生在我的代码呢?感谢所有

Button btn=(Button) findViewById(R.id.btn1);
btn.measure(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
width_btn = btn.getMeasuredWidth();
height_btn = btn.getMeasuredHeight();
Log.d("TAG", String.valueOf(index)+String.valueOf(width_btn)+","+String.valueOf(height_btn));

解决方法 1:

layout 文件,很明显, button 高度和宽度固定。您可以定义 button 宽度和高度以 dimens.xml 文件,如下所示︰

<dimen name="btn_width">50dp</dimen>
 <dimen name="btn_hieght">10dp</dimen>

现在设置这些高度和宽度layout

android:layout_width="@dimen/btn_width"
android:layout_height="@dimen/btn_hieght"

现在你可以得到的宽度和高度

float hieght = getResources().getDimension(R.dimen.btn_hieght);
 float width  = getResources().getDimension(R.dimen.btn_width);

作为迈克建议,删除 btn.measure 线。

赞助商