首先,我想说我一直在寻找论坛上的答案,但我发现与我想要的不匹配。基本上,我想要的是:当用户点击.xml文件中之前“指定”的图像之一时,在.xml文件上未“指定”的屏幕中心会显示一个新图像。我写了“指定”导致idk,如果这是引用它的正确方法。
编辑:以前没有必要不指定图像,我只需要为可见性设置“消失”。这段代码正是我想要的(ty人):Main.java
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
public class Principal extends Activity {
ImageView cuia1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
cuia1 = (ImageView) findViewById(R.id.cuia1);
cuia1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
ImageView cuia1grande = (ImageView) findViewById(R.id.cuia1grande);
cuia1grande.setVisibility(1);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.principal, menu);
return true;
}
}
activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="*"
android:stretchColumns="*">
<TableRow
android:id="@+id/tabelaCuias"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center">
<TextView
android:id="@+id/selecionaCuia"
android:text="Selecione a cuia"
android:textStyle="bold">
</TextView>
<ImageView
android:id="@+id/cuia1"
android:src="@drawable/cuia1">
</ImageView>
<ImageView
android:id="@+id/cuia2"
android:src="@drawable/cuia2">
</ImageView>
<ImageView
android:id="@+id/cuia3"
android:src="@drawable/cuia3">
</ImageView>
<ImageView
android:id="@+id/cuia4"
android:src="@drawable/cuia4">
</ImageView>
</TableRow>
</TableLayout>
<ImageView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:visibility="gone"
android:id="@+id/cuia1grande"
android:src="@drawable/cuia1grande">
</ImageView>
答案 0 :(得分:0)
您是否有任何理由不想在布局文件中“指定”图像?您可以将它放在那里而不显示它(visibilty="gone"
),然后在您认为合适时显示/隐藏它。
这就是我要做的事情:
将您的布局设为RelativeLayout
而不是TableLayout
(这样可以更轻松地在中心显示图像)
将TableLayout
放入包裹RelativeLayout
将ImageView
定义为包裹RelativeLayout
中的最后一个子项,设置centerInParent="true"
,visibilty="gone"
在onClick
方法中,只需将其visibility
设为visible
。
如果您真的不想在布局中定义ImageView
,那么您可以通过编程方式创建它:
按照与之前相同的步骤1-2
在代码
RelativeLayout
的引用
在onClick
方法中,以编程方式创建ImageView
,通过代码指定centerInParent="true"
(如果您需要有关如何执行此操作的示例,请与我们联系。我将使用代码示例编辑答案。
通过RelativeLayout
myRelativeLayout.addView(myImageView);
醇>
希望这会有所帮助:)
答案 1 :(得分:0)
public class Principal extends Activity {
ImageView cuia1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
cuia1 = (ImageView) findViewById(R.id.cuia1);
//set invisible
cuia1 .setVisibility(View.INVISIBLE);
cuia1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//show image on the center of screen
//set image
cuia1.setImageResource(R.drawable.cuia1);
// set visible
cuia1 .setVisibility(View.VISIBLE);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.principal, menu);
return true;
}
}
导入import android.view.View;
Cheerz!