无法从我的活动记录访问主窗口/布局



这是一个简单应用程序的开始,用于最初显示一些文本视图和按钮。

我想通过获取主窗口/布局的尺寸并使用它来以我想要的任何方式对组件进行硬编码来避免使用布局管理器。但是我的主要活动无法获取有关主窗口/布局的非零数据。我不知道是应该这样,还是我在做一些愚蠢的事情,并希望得到一些帮助。

这是一个命令行项目,在win10下使用Ant并输出到USB手机。

我已经使用 Android Tools 24.4.1 将 SDK 管理器更新到 Android 6.0 (API 23),并安装了 Android Support Lib 的 v23.2,尽管 Ant 似乎有不同的想法,正如您在我之前具有 Ant 输出的消息中看到的那样:

-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2.

我不知道这是否有区别,但我认为在这种情况下不会。

接下来的两个文件就目前而言是完整的。

我会包含更多,但网站破坏我的代码的方式不鼓励上传到它。

如果我能理解"如何格式化"可能会有所帮助,但是 (A) 我什至没有看到它在我的第一篇文章之前,(B) 我现在不明白它。有太多的说明和太多的行话;例如,什么是反引号?

难道不能有一个简单的格式可以接受你扔给它的一切吗?

main.xml
========
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    package="com.Chatterton.Peter.ChessClock"
    android:id="@+id/main_window"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:id="@+id/time_text_view_left"
        android:text="top_left"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    <Button
        android:layout_alignParentBottom="true"
...

共有 4 个组件,每个角一个,具有相同的layout_width和高度。

ChessClockActivity.java
=======================
package com.Chatterton.Peter.ChessClock;
import android.app.Activity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.content.Intent;
import android.app.Activity;
import android.os.Bundle;
import android.graphics.Color;
import android.widget.TextView;
import android.util.Log;
public class ChessClockActivity extends Activity
    {
    public int winOriginX=10, winOriginY=20, winWidth=44, winHeight=66;
    @Override
    public void onCreate( Bundle savedInstanceState )
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        RelativeLayout mainLayout = (RelativeLayout)findViewById( R.id.main_window );
        int mainWidth = mainLayout.getWidth();
        int mainHeight = mainLayout.getHeight();
        Log.d( "clox", "mainLayout=" + mainLayout );
        Log.d( "clox", "main W/H=" + mainWidth + "/" + mainWidth );           
...

屏幕结果:

它显示显示的最后一个组件(全尺寸)及其文本。

logcat results:
===============
D:AndroidChessClock>adb shell  
shell@android:/ $ logcat clox:D *:S   
--------- beginning of /dev/log/main  
--------- beginning of /dev/log/system  
D/clox    (27214): mainLayout=android.widget.RelativeLayout@41755b80    
D/clox    (27214): main W/H=0/0
**

在初始化过程的这一点上,它们没有大小。

单击此处查看答案,该答案可让您在显示组件后访问组件的尺寸。

或者,也许您可以获取窗口大小并按该值计算组件的位置......在这里回答

最新更新