2013-10-02 58 views
0

首先,我想說我一直在尋求關於論壇的答案,並且發現與我想要的不匹配。基本上,我想要的是:當用戶在.xml文件上單擊之前「指定」的圖像之一時,在.xml文件的屏幕中央未顯示「指定」的新圖像。我寫了「指定」導致idk,如果它是正確的方式來引用此。Android - 從res/drawable onClick中顯示圖像

編輯:沒有必要以前沒有指定圖像,我需要的只是設置「不見」可見性。此代碼的工作正是我想要的(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

所以你想要在其他窗口上顯示相同的圖像或不同的圖像在一起? – kabuto178

+0

當我點擊一個已經顯示的圖像時,屏幕中心應該顯示一個不同的圖像。 – lucasdc

回答

0

有沒有你不想要任何理由在佈局文件中「指定」圖像?您可以將其放在那裏,而不是顯示它(visibilty="gone"),然後在您認爲合適時顯示/隱藏它。

這裏就是我想要做的:

  1. 讓您的佈局RelativeLayout而不是TableLayout(這會讓事情變得更容易爲顯示在中心的圖像)內

  2. 將您TableLayout包裹RelativeLayout

  3. 定義ImageView作爲包裹RelativeLayout中的最後一個子集,集合centerInParent="true"visibilty="gone"

  4. 在你onClick方法,只需要設定其爲visibilityvisible

如果你真的不想在佈局定義ImageView,那麼你可以通過編程創建:

  1. 按照1-2的相同步驟之前

  2. 捕獲代碼中的包裝RelativeLayout的引用

  3. onClick方法中,創建ImageView以編程方式,通過代碼指定centerInParent="true"(讓我知道如果你想要一個例子如何做到這一點&我將編輯與代碼示例的答案)。

  4. 通過myRelativeLayout.addView(myImageView);

希望添加新的視圖到RelativeLayout這有助於:)

+0

謝謝,我會按照你的提示,看看會發生什麼。 – lucasdc

+0

是的!這明確解決了..我會發布如何現在的代碼。非常感謝你。 – lucasdc

+0

很高興我能幫忙!不要忘記標記爲正確的:) –

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!