Android 从按钮OnClickListener调用setLayoutParams
我正在尝试在单击按钮时调整ImageView的大小。我不知道为什么,但是当我在onCreate方法中调用setLayoutParams时,它会工作,但当在按钮的OnClickListener中使用它时,它不会工作。我错过什么了吗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我的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接受答案,如果它有用并且有效。谢谢