2014-01-16 49 views
2

我在我的應用程序中有Layout其中有5 Frame佈局。我在Graphical Layout中設計了它。它在佈局中顯示完美。但是當我在設備中運行應用程序時,它不顯示帶鍵盤的2個綠色按鈕symbol.It只在應用程序中顯示Red Area佈局不顯示如圖形佈局所示?

我已經測試與另一Activity.It的佈局,它工作完美。我認爲有以下錯誤class。我無法找到它發生在哪裏?

沒有顯示在LogCat ......

所以幫我在正確的方向:)

感謝您的幫助......

enter image description here

佈局代碼

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <FrameLayout 
     android:id="@+id/flKeyboardButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/keyboard_off" 
     android:maxHeight="100.0dip" 
     android:maxWidth="60.0dip" 
     android:minHeight="100.0dip" 
     android:minWidth="60.0dip" /> 

    <FrameLayout 
     android:id="@+id/flLeftButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@id/flKeyboardButton" 
     android:background="@drawable/left_button_off" 
     android:maxHeight="100.0dip" 
     android:minHeight="100.0dip" /> 

    <FrameLayout 
     android:id="@+id/flRightButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_toRightOf="@id/flKeyboardButton" 
     android:background="@drawable/left_button_off" 
     android:maxHeight="100.0dip" 
     android:minHeight="100.0dip" /> 

    <FrameLayout 
     android:id="@+id/flAdvancedPanel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/advanced" 
     android:maxHeight="96dp" > 
    </FrameLayout> 

    <FrameLayout 
     android:id="@+id/flTouchPad" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_above="@id/flKeyboardButton" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:background="@drawable/touchpad" /> 

    <EditText 
     android:id="@+id/etAdvancedText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="-100dp" 
     android:inputType="textMultiLine" 
     android:maxHeight="32dp" 
     android:visibility="visible" /> 

</RelativeLayout> 

這裏是Java代碼

 public class PadActivity extends Activity { 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_mouse); 
    Settings.init(this.getApplicationContext()); 
    // Hide the title bar 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    if (this.lock == null) { 
     Context appContext = this.getApplicationContext(); 
     // get wake lock 
     PowerManager manager = (PowerManager) appContext.getSystemService(Context.POWER_SERVICE); 
     this.lock = manager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, this.getString(R.string.app_name)); 
     // prepare sensor Listener 
     this.mSensorListener = new SensorEventListener() { 
      // @Override 
      public void onSensorChanged(SensorEvent event) { 
       Sensor sensor = event.sensor; 
       int type = sensor.getType(); 
       switch (type) { 
        case Sensor.TYPE_ACCELEROMETER: 
         onAccelerometer(event.values); 
         break; 
        case Sensor.TYPE_MAGNETIC_FIELD: 
         onMagnetic(event.values); 
         break; 
         // case Sensor.TYPE_ORIENTATION: 
         // break; 
       } 
      } 

      // @Override 
      public void onAccuracyChanged(Sensor sensor, int accuracy) { 
       // no use for this 
      } 
     }; 

     if (useOrientation) { 
      // enable Sensors 
      enableSensors(); 
     } 

     /** 
      * Caches information and forces WrappedMotionEvent class to load at 
      * Activity startup (avoid initial lag on touchpad). 
      */ 
     this.mIsMultitouchEnabled = WrappedMotionEvent.isMutitouchCapable(); 
     // Setup accelerations 
     mMouseSensitivityPower = 1 + ((double) Settings.sensitivity)/100d; 
     mScrollStep = (sScrollStepMin - sScrollStepMax) * (sScrollMaxSettingsValue - Settings.scrollSensitivity)/sScrollMaxSettingsValue + sScrollStepMax; 

     Log.d(TAG, "mScrollStep=" + mScrollStep); 
     Log.d(TAG, "Settings.sensitivity=" + Settings.scrollSensitivity); 
     // 
     this.accel = new Point3D(); 
     this.mag = new Point3D(); 
     this.lastSpace = new CoordinateSpace(); 
     this.currSpace = new CoordinateSpace(); 
     // UI runnables 
     this.rLeftDown = new Runnable() { 
      public void run() { 
       drawButtonOn(flLeftButton); 
      } 
     }; 
     this.rLeftUp = new Runnable() { 
      public void run() { 
       drawButtonOff(flLeftButton); 
      } 
     }; 
     this.rRightDown = new Runnable() { 
      public void run() { 
       drawButtonOn(flRightButton); 
      } 
     }; 
     this.rRightUp = new Runnable() { 
      public void run() { 
       drawButtonOff(flRightButton); 
      } 
     }; 
     this.rMidDown = new Runnable() { 
      public void run() { 
       drawSoftOn(); 
      } 
     }; 
     this.rMidUp = new Runnable() { 
      public void run() { 
       drawSoftOff(); 
      } 
     }; 
     // window manager stuff 
     getWindow().setFlags(32, 32); 
     // this.getWindow().setFlags(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN, 
     //   WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
    } 
    // 
    try { 
     DisplayMetrics dm = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(dm); 
     int width = getApplicationContext().getResources().getDisplayMetrics().widthPixels; 
     int height = getApplicationContext().getResources().getDisplayMetrics().heightPixels; 
     Log.i("Width", "" + width); 
     Log.i("height", "" + height); 
     this.sender = new OSCPortOut(InetAddress.getByName(Settings.ip), OSCPort.defaultSCOSCPort()); 
     // 
     this.initTouchpad(); 
     this.initLeftButton(); 
     this.initRightButton(); 
     this.initMidButton(); 
     this.initAdvancedPanel(); 
     this.initAdvancedText(); 
    } catch (Exception ex) { 
     Log.d(TAG, ex.toString()); 
    } 
} 

private void initTouchpad() { 
       FrameLayout fl = (FrameLayout) this.findViewById(R.id.flTouchPad); 

       // let's set up a touch listener 
       fl.setOnTouchListener(new View.OnTouchListener() { 
         public boolean onTouch(View v, MotionEvent ev) { 
           return onMouseMove(ev); 
         } 
       }); 
     } 

     private void initLeftButton() { 
       FrameLayout fl = (FrameLayout) this.findViewById(R.id.flLeftButton); 
       android.view.ViewGroup.LayoutParams lp = fl.getLayoutParams(); 
//    if(!Settings.hideMouseButtons) lp.height=0; 
       fl.setLayoutParams(lp); 
       // listener 
       fl.setOnTouchListener(new View.OnTouchListener() { 
         public boolean onTouch(View v, MotionEvent ev) { 
           return onLeftTouch(ev); 
         } 
       }); 
       this.flLeftButton = fl; 
     } 

    private void initRightButton() { 
      FrameLayout iv = (FrameLayout) this.findViewById(R.id.flRightButton); 
      android.view.ViewGroup.LayoutParams lp = iv.getLayoutParams(); 
      // if(!Settings.hideMouseButtons) lp.height=0; 
      iv.setLayoutParams(lp); 
      // listener 
      iv.setOnTouchListener(new View.OnTouchListener() { 
        public boolean onTouch(View v, MotionEvent ev) { 
          return onRightTouch(ev); 
        } 
      }); 
      this.flRightButton = iv; 
    } 

    private void initMidButton() { 
      FrameLayout fl = (FrameLayout) this.findViewById(R.id.flKeyboardButton); 
      android.view.ViewGroup.LayoutParams lp = fl.getLayoutParams(); 
      // if(!Settings.hideMouseButtons) lp.height=0; 
      fl.setLayoutParams(lp); 
      // listener 
      fl.setOnTouchListener(new View.OnTouchListener() { 
        public boolean onTouch(View v, MotionEvent ev) { 
          return onMidTouch(ev); 
        } 
      }); 
      this.flMidButton = fl; 
    } 
+0

可以肯定的是,圖形佈局中的設備和您的實際設備是相同還是具有相同特徵(屏幕尺寸和密度)?謝謝。 – fasteque

+0

它們是一樣的...... – AruLNadhaN

+0

'public PadActivity(){super();}'你不需要這個。 –

回答

0

Atlast我發現爲什麼佈局沒有正確顯示在我的應用程序中。 這是由於我的三個初始化方法中的這一行。

if(!Settings.hideMouseButtons) lp.height=0; 

評論此行後,佈局顯示正確。

感謝@chintan khetiya & @Robinhood誰幫助解決這個問題。

0

@id/flTouchPad的高度match_parent,我認爲這是問題(它使View大如其父)。

+0

上述解決方案無法正常工作。我認爲在課堂上存在錯誤.. – AruLNadhaN

3

它似乎是你的java文件代碼是錯誤的。你的第一個函數應該是OnCreate(),其餘的代碼應該在那之後寫入。

即使你已經設置了你的觀點後長代碼是完全錯誤的。

public class PadActivity extends Activity { 
// set your variables & objects 
.. 
.. 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.pad_layout); 
... 
... //Other code 
} 
} 

請更改您的代碼位置,肯定會工作。

+0

已編輯爲您建議.... – AruLNadhaN