2015-01-23 6 views
0

나는 here에서 다운로드 한 아날로그 게이지로 구성된 응용 프로그램을 만들고 있는데, 필자의 요구 사항에 맞게 수정했습니다. 버튼을 클릭하면 바늘이 값을 벗어납니다. 그러나 필자는 3 개의 아날로그 게이지를 보여주고 싶다. 이것을 위해 XML 파일에 3 게이지 뷰를 추가했으나 같음을 표시했습니다. java.lang.IllegalArgumentException : 너비와 높이가> 0이어야합니다.XML 파일에 여러 게이지 뷰를 추가하는 방법?

이것은 내 활동입니다.

/******************************************************************************* 
* Copyright (c) 2012 Evelina Vrabie 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
*******************************************************************************/ 
package org.codeandmagic.android.gauge.demo; 

import java.util.Random; 
import org.codeandmagic.android.gauge.GaugeView; 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

    private GaugeView mGaugeView1; 
    Button check; 
    private final Random RAND = new Random(); 

    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mGaugeView1 = (GaugeView) findViewById(R.id.gauge_view1); 
     check = (Button)findViewById(R.id.button1); 
     mGaugeView1.setTargetValue(0); 
     check.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 


      mTimer.start(); 

     } 
    }); 
    } 

    public final CountDownTimer mTimer = new CountDownTimer(30000, 1000) 
    { 

     @Override 
     public void onTick(final long millisUntilFinished) 
     { 

      mGaugeView1.setTargetValue((float)25.0); 
      //mGaugeView2.setTargetValue(RAND.nextInt(101)); 
     } 

     @Override 
     public void onFinish() { 

      mTimer.cancel(); 
     } 
    }; 
} 

This is my XML: 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:gauge="http://schemas.android.com/apk/res/org.codeandmagic.android.gauge.demo" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background" 
    android:gravity="center" 
    android:orientation="vertical" 
    android:padding="20dp" > 

    <org.codeandmagic.android.gauge.GaugeView 
     android:id="@+id/gauge_view1" 
     android:layout_width="match_parent" 
     android:layout_height="303dp" 
     android:layout_gravity="center" /> 

    <org.codeandmagic.android.gauge.GaugeView 
     android:id="@+id/gauge_view3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/gauge_view2" 
     android:layout_toRightOf="@+id/gauge_view2" /> 

     <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="Check" /> 

     <org.codeandmagic.android.gauge.GaugeView 
      android:id="@+id/gauge_view2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" /> 

</RelativeLayout> 
+0

이 오류 런타임입니까? – KOTIOS

+0

그래, 런타임 오류 – lakshman

답변

0

레이아웃 xml 파일에서 너는 wrap_content 콘텐츠로 GaugeView 높이 및 너비를 지정했습니다. wrap_content에 높이와 너비를 지정하지 마십시오. 50dp 또는 100dp와 같은 dps의 높이와 너비를 지정하십시오.

+0

나는 그것이 어떻게 해결되었는지, 그리고 "GRAPHICAL VIEW"에서 xml의보기 구성 요소가없는 회색 컬러 화면을 보여 주었고 세 번째 게이지보기가 xml 아래에 표시되지 않았습니다. 렌더링하는 동안 제기 예외 : 다음과 같은 파일 3 개 예외 정보가 창>보기 표시>에 기록됩니다 오류 로그 java.lang.ArrayIndexOutOfBoundsException : 그것은 @lakshman 3 – lakshman

+0

이 라이브러리 (GaugeView)의 문제이다. 예외를 제거하려면 라이브러리를 수정해야합니다. – Chandrakanth

0

저는 게이지 뷰 프로젝트에서 일했습니다. 여러 게이지보기를 추가해도 아무런 문제가 없었습니다. 나는 단지 내 필요에 따라 게이지보기의 높이와 너비를 설정했습니다.

+0

수정 된 코드를 게시 할 수 있습니까? @ Kashif Ks – lakshman

+0

예. 전체 코드를 공유하지 않습니다. 그것은 인터넷 속도 테스트의 XML 레이아웃입니다. 그러나 그것은 당신의 필요를 충족시킵니다. –

+0

내 다른 awnser을 참조하십시오 –

0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:gauge="http://schemas.android.com/apk/res/com.kashif.InternetSpeedTest" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:gravity="center" 
    android:background="@drawable/background"> 

    <org.codeandmagic.android.gauge.GaugeView 
     android:id="@+id/GMeter" 
     android:layout_width="300dp" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

    <TextView 
     android:id="@+id/tvDownspeed" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="@string/download" /> 

    <org.codeandmagic.android.gauge.GaugeView 
     android:id="@+id/gDownload" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     gauge:showNeedle="false" 
     gauge:showOuterRim="false" 
     gauge:showOuterShadow="true" 
     gauge:showRanges="false" 
     gauge:showText="true" 
     gauge:textUnit="MBs" 
     android:layout_marginTop="5dp" /> 

    <TextView 
     android:id="@+id/tvUpspeed" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="@string/upload" 
     android:layout_marginTop="5dp" /> 


    <org.codeandmagic.android.gauge.GaugeView 
     android:id="@+id/gUpload" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     gauge:showNeedle="false" 
     gauge:showOuterRim="false" 
     gauge:showOuterShadow="true" 
     gauge:showRanges="false" 
     gauge:showText="true" 
     gauge:textUnit="MBs" 
     android:layout_marginTop="5dp" /> 

    <ProgressBar 
     android:id="@+id/pbwait" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 
+0

고마워 형이 작동합니다 @ Kashif Ks – lakshman

+0

내 기쁨. @ lakshman. –