2016-04-11 44 views
0

我試圖創建一個名爲DecoView dynamicaly的小部件,每次我按下一個按鈕。有沒有辦法動態添加一個小部件在另一個小部件的頂部

如果我只是把兩個裝飾視圖在XML中我可以看到他們兩個,他們都看起來很好ontop其他。

,但是當我嘗試在代碼動態添加它,我只是第一個創建的, 和所有其餘的只是在沒有生成

我失去了什麼嗎? 有人可以幫助我嗎?

我mainActivity.java

package com.example.shay_v.dynamicdecoviewexample; 

import android.graphics.Color; 
import android.graphics.PointF; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

import com.hookedonplay.decoviewlib.DecoView; 
import com.hookedonplay.decoviewlib.charts.SeriesItem; 
import com.hookedonplay.decoviewlib.events.DecoEvent; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    Button mainMenuButton; 
    int widgetInteger = 1; 
    LinearLayout ll; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //pointing to display 
     mainMenuButton = (Button) findViewById(R.id.button); 
     mainMenuButton.setOnClickListener(this); 

     //points to the linear layout in the xml 
     ll = (LinearLayout)findViewById(R.id.mainMenu_mainLayout); 

    } 

    private void createDecoViewWidget (int i) { 

     //adds params to the linear layout 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT); 

     //deco view widget 
     DecoView decoViewWidget = new DecoView(this); 

     //adding to view 
     decoViewWidget.setId(i); 
     ll.addView(decoViewWidget, params); 


     //decoViewWidget.configureAngles((int) (Math.random() * 360) + 1, (int) (Math.random() * 100)); 

     //Create data series track 
     SeriesItem seriesItem = new SeriesItem.Builder(Color.argb(255, (int) (Math.random()*255), (int) (Math.random()*255), (int) (Math.random()*255))) 
      //third controller is end point 

      .setRange(0, 100, 0) 
      .setLineWidth(60f) 
      .setInset(new PointF(120f, 120f)) 
      .build(); 

     int series1Index = decoViewWidget.addSeries(seriesItem); 

     decoViewWidget.addEvent(new DecoEvent.Builder((float) (Math.random() * 100)).setIndex(series1Index).setDelay(1000).build()); 


    } 

    //button listener 
    @Override 
    public void onClick(View v) { 
     createDecoViewWidget (widgetInteger); 
     widgetInteger++; 

    } 
} 

我activity_main.xml中>

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.shay_v.dynamicdecoviewexample.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!" /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="350dp" 
     android:layout_height="350dp" 
     android:layout_centerVertical="true" 
     android:id="@+id/mainMenu_mainLayout" 
     android:layout_centerHorizontal="true"></LinearLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

的人?

回答

0

當您創建視圖時,它們將被添加到LinearLayout中。這種佈局將依次定位視圖,因此第二個視圖將從屏幕的可見區域中移出。

由於您希望將所有視圖繪製在彼此之上,因此您應該使用RelativeLayout

相關問題