Android 从按钮OnClickListener调用setLayoutParams

Android 从按钮OnClickListener调用setLayoutParams,android,android-layout,Android,Android Layout,我正在尝试在单击按钮时调整ImageView的大小。我不知道为什么,但是当我在onCreate方法中调用setLayoutParams时,它会工作,但当在按钮的OnClickListener中使用它时,它不会工作。我错过什么了吗 ImageView我的ImageView; 按钮myButton; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layo

我正在尝试在单击按钮时调整ImageView的大小。我不知道为什么,但是当我在onCreate方法中调用setLayoutParams时,它会工作,但当在按钮的OnClickListener中使用它时,它不会工作。我错过什么了吗

ImageView我的ImageView;
按钮myButton;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u结果);
myImageView=findViewById(R.id.viewtest);
myButton=(Button)findViewById(R.id.buttontest);
resizeImageView();//在此处调用时调整大小
myButton.setOnClickListener(新建Button.OnClickListener(){
@凌驾
公共void onClick(视图v){
resizeImageView();//在此处调用时不调整大小
}
});
}
私有void resizeImageView(){
Toast.makeText(getApplicationContext(),“Resize”,Toast.LENGTH_LONG.show();
LinearLayout.LayoutParams params=(LinearLayout.LayoutParams)myImageView.getLayoutParams();
参数高度=300;
参数宽度=300;
myImageView.setLayoutParams(参数);
}
XML布局。我在RelativeLayout内部使用LinearLayout


我刚检查过。在使用ImageView时,这可以正常工作

也许您正在多次调整它的大小。意味着如果您已经在
onCreate
方法中调用了
resresresresizeimageview()
,并且您在OnClick方法中再次调用它,则调整大小将不可见,因为它已经具有您要调整大小的大小


在xml中有
AppCompatButton
,但在java中定义为
Button
。将xml或java中的
AppCompatButton
更改为
Button
Button
更改为
AppCompatButton

我使用了您的代码来创建一个新项目,刚刚注释掉了对
resizeImageView()
的第一个调用,当在
onClick()中调用
resizeImageView()
时,它可以正常工作

正如Derek回答的,可能您已经在
onCreate()
期间为ImageView设置了相同的边界,您希望在单击按钮时更新该边界

还有一个建议:

  • 尝试将下面的属性
    android:layout_=“@id/lineartest”
    添加到AppCompatButton
  • 更改android:layout\u height=“wrap\u content”
  • ,这样您就可以查看ImageView发生的更改 试试这个

    public class SomeActivity extends Activity {
    
        public static final float screenWidth;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.the_company);
            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            screenWidth = metrics.widthPixels;
        }
    }
    
    在宣布实施后:

     Button mButton = (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
                float scale =  SomeActivity.screenWidth / view.getWidth();
                if(view.getScaleX() == 1) {
                    view.setScaleY(scale);
                    view.setScaleX(scale);
                } else{
                    view.setScaleY(1);
                    view.setScaleX(1);
                }
            }
        });
    

    嗯。我找到了解决办法。我使用了一些影响ImageView(加载图像)的异步任务。当我禁用它时,“调整大小”按钮开始正常工作。谢谢您的帮助。

    请同时发布您的.xml文件。从下次开始,请尝试添加所有相关代码。谢谢。不,我没有在onCreate中使用resizeImageView()。把它放在代码中作为例子。它是有线的。我试了几百次,但在onClick中都没能成功。代码是一样的。我只是在布局中有自己的视图。我也发布了布局xml。可能是我弄错了。尝试在xml或java中将AppCompatButton更改为Button,或者将Button更改为AppCompatButton。这里一切正常。我也使用了你的活动和xml。@4timepi接受答案,如果它有用并且有效。谢谢