在onCreate()中获取某个View的宽高

我们都知道,在Activity的onCreate()方法中调用View的getWidth()和getHeight()方法时,返回的值都是0,因为Activity调用setContentView方法只是创建了这个View,调用了这个View构造方法而已,其中的onMeasure()方法还没被调用,所以不能知道它的宽高。但是,View有一个公开的方法post(),允许我们通过参数Runnable,在子线程中获取View的宽和高。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView textView = (TextView) findViewById(R.id.id_tv_main_text);
        textView.post(new Runnable() {
            @Override
            public void run() {
                int width = textView.getWidth();
                int height = textView.getHeight();
                Toast.makeText(MainActivity.this, "宽:" + width + ",高:" + height, Toast.LENGTH_SHORT).show();
            }
        });

    }
}
这样一来,就可以在onCreate中获取到我们指定View的宽和高了。


要实现这个功能,可以按照以下步骤进行: 1. 在布局文件添加一个 Button 和一个 TextView。 2. 在 Activity 找到这两个控件,并为 Button 设置一个点击事件监听器。 3. 在点击事件监听器创建一个 AlertDialog 对话框。 4. 将对话框设置为单选列表模式,并为列表添加选项。 5. 为列表的每个选项设置一个点击事件监听器,在监听器获取选项的文本内容,并将其设置为 TextView 的文本。 以下是示例代码: ```java public class MainActivity extends AppCompatActivity { private Button mButton; private TextView mTextView; private String[] mOptions = {"选项1", "选项2", "选项3"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = findViewById(R.id.button); mTextView = findViewById(R.id.textView); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("请选择一个选项"); builder.setSingleChoiceItems(mOptions, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { String selectedOption = mOptions[i]; mTextView.setText(selectedOption); dialogInterface.dismiss(); } }); builder.create().show(); } }); } } ``` 这个示例代码,我们在点击 Button 时创建了一个 AlertDialog 对话框,该对话框包含一个单选列表,列表包含了三个选项。当用户点击列表的某个选项时,我们获取该选项的文本内容,并将其设置为 TextView 的文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值