无法从我的Activity访问主窗口/布局

时间:2016-03-02 16:16:14

标签: android

这是一个简单的应用程序的开始,最初显示一些TextViews和Buttons。

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

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

我已经使用Android Tools 24.4.1将SDK Manager更新到Android 6.0(API 23)并安装了Android支持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和height。

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:\Android\ChessClock>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
**

1 个答案:

答案 0 :(得分:0)

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

Click here to an answer that will let you access the sizes of your components after they have been displayed.

或许您可以通过该值获取窗口大小并计算组件的位置...... Answer here