未显示布局,如图形布局中所示?

时间:2014-01-16 15:14:27

标签: java android android-layout layout

我的应用中有一个LayoutFrame个布局。我在Graphical Layout设计了它。它在布局中显示完美。但是当我运行应用程序时设备没有显示带有键盘符号的2个绿色按钮。它仅显示应用程序中的Red Area

我已经用另一个Activity测试了布局。它运行得很完美。我认为下面的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;
    }

3 个答案:

答案 0 :(得分: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
 } 
}

请更改您的代码位置,这肯定会有效。

答案 1 :(得分:0)

@id/flTouchPad的高度为match_parent,我认为这是问题(它使View与其父级一样大。)

答案 2 :(得分:0)

Atlast我发现为什么布局没有在我的应用程序中正确显示。 这是由于我的三个初始化方法中的这一行。

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

评论此行后,布局正确显示。

感谢@chintan khetiya&amp; @Robinhood帮助解决了这个问题。