java - 布局未显示为图形布局中所示?

标签 java android android-layout layout

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

我已经用另一个 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;
    }

最佳答案

看来您的 java 文件代码有误。您的第一个函数应该是 OnCreate(),其余代码应该写在这之后。

即使您在很长的代码之后设置了您的 View ,这也是完全错误的。

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
 } 
}

请更改您肯定会工作的代码位置。

关于java - 布局未显示为图形布局中所示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21165595/

相关文章:

java - 如何实现为对象实例添加值的默认接口(interface)方法

Java:带小数的 double 格式

JavaFX 如何在 GridPane 中的 HBox 中垂直对齐复选框

android - 为什么 Android Studio 在编辑 xml 文件或更改设计时会变慢?

java - 从 javascript (ajax) 调用 Spring Controller 方法未触发?

android - 将第二个 fragment 安装到 Activity 中

android - 发现任务 ':app:processDebugResources' 配置有问题

android - 有没有办法将参数传递给应用程序的市场安装程序

android - 如何检查 View 中是否存在间接子项?

android - 如何使用工具 :context to associtate Fragment files?