2016-04-11 14 views
0

私はボタンを押すたびにDecoView dynamicalyというウィジェットを作成しようとしています。動的に別のウィジェットの上にウィジェットを追加する方法はありますか?

XMLに2つのデコビューを置くだけであれば、両方見ることができ、両方のデモビューを他のものの上でうまく表示できます。

が、私はコードでdynamiclyそれを追加しようとしたとき、私は最初のものを作成し、 およびすべての残りの部分は、ちょうど

を作成されますされていない私はここで何をしないのですか? 誰かがこれを手伝ってくれますか?

私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です。このタイプのレイアウトでは、ビューが順番に配置されるため、2番目のビューは画面の可視領域から描画されます。

すべてのビューを重ねて表示するには、RelativeLayoutを使用する必要があります。

関連する問題