2015-11-03 86 views
0

我具有延伸活動和獲得它認爲這樣一個類:如何在擴展視圖的類中創建按鈕和圖像視圖?

setContentView((View) viewClass); 

viewClass類是從視圖擴展類。

我需要在這個類中實現一些按鈕和圖像視圖。但是如何?

+0

爲什麼不從xml設置活動的內容視圖? –

+0

你打算實現什麼? –

+0

您必須重寫onDraw,然後繪製按鈕和圖像,以便獲取按鈕上的事件,則必須在touchlistener內部檢查按下的座標是否位於按鈕區域內。 –

回答

0

您需要延長從的ViewGroup或樣的佈局,例如LinearLayout中的自定義視圖,這將幫助你以編程方式從樣活性增加另一個視圖佈局:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    LinearLayout view = new LinearLayout(this); 
    setContentView(view); 
    TextView tv = new TextView(this); 
    tv.setText("asas"); 
    view.addView(tv); 
} 

}

+0

哦謝謝它的作品:) – user5508330

0

你可以做類似下面

讓你的主要活動是如下

public class MainActivity extends Activity{ 
     MyView view; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      Context ctx = getApplicationContext(); 
      view=new MyView(ctx); 
      setContentView(view); 
     } 
    } 

,讓您的視圖類擴展任何容器佈局。

public class MyView extends RelativeLayout{ 

    public MyView(Context context) { 
     super(context); 


     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     this.setLayoutParams(layoutParams); 

     RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

     TextView tv = new TextView(context); 
     tv.setText("hello"); 
     tv.setId(1); 

     Button b = new Button(context); 
     params1.addRule(RelativeLayout.BELOW, tv.getId()); 
     b.setText("Hi"); 
     b.setId(2); 

     this.addView(tv); 
     this.addView(b, params1); 

    } 
} 
+0

我會嘗試它... – user5508330

+0

該類有這樣的:public viewClass(Context context,AttributeSet attr){}它也有AttributeSet參數。謝謝你的幫助。以上答案解決了我的問題。 – user5508330

相關問題