gpt4 book ai didi

android - 按钮 getLeft() 和 getTop() 返回 0

转载 作者:行者123 更新时间:2023-12-01 13:29:55 24 4
gpt4 key购买 nike

我的 getLeft() 和 getTop() 有问题,它返回 0。我在 Stackoverflow 上看到我应该使用 GlobaleLayoutListener 但仍然无法正常工作。

我的观点是这样运作的。有一个第一个水平 ScrollView 栏,让用户选择用户想要查看他的图表的时间段。当他选择“每周”或“每月”时,会出现第二个条形图。用户可以选择一个月或一天。因此,在开始时,第二条可见性消失了。

我想设置第二个栏的项目。因为就像今天我们在九月一样,如果用户点击每月,我希望第二个栏的第一项是九月。

我试过了:

ViewTreeObserver observer = decButton.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
System.out.println("KIRBY " + decButton.getLeft());
//in here, place the code that requires you to know the dimensions.
//Place your code here
}
});

但它不起作用:/

有我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

android:orientation="vertical"
android:background="@color/white"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">

</RelativeLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/quickViewConsumptionToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/wb_color"
android:titleTextColor="@color/white"
android:theme="@style/toolbar_white"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/hello">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/test">
<HorizontalScrollView
android:id="@+id/horizontalBar"
android:layout_width="match_parent"
android:layout_height="100px">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dailyButton"
android:text="Daily"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/weeklyButton"
android:text="Weekly"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:id="@+id/monthlyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5px"
android:background="@android:color/transparent"
android:text="Monthly"
android:textAllCaps="false"
android:textStyle="normal" />

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/yearlyButton"
android:text="Yearly"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/allTimeButton"
android:text="All time"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
</LinearLayout>
</HorizontalScrollView>

<View
android:id="@+id/divider"
android:layout_width="100dp"
android:layout_marginLeft="140dp"
android:layout_marginRight="20dp"
android:layout_height="1dp"
android:background="@android:color/black"
android:layout_below="@+id/horizontalBar"
android:visibility="visible"
android:layout_marginBottom="5px"/>

<HorizontalScrollView
android:id="@+id/horizontalMonthlyBarBellow"
android:layout_width="match_parent"
android:layout_height="100px"
android:layout_below="@+id/divider"
android:layout_alignParentStart="true"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/janButton"
android:text="January"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/febButton"
android:text="February"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:id="@+id/marchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5px"
android:background="@android:color/transparent"
android:text="March"
android:textAllCaps="false"
android:textStyle="normal" />

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/aprilButton"
android:text="April"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mayButton"
android:text="May"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/juneButton"
android:text="June"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/julyButton"
android:text="July"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/augButton"
android:text="August"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:id="@+id/septView"
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sepButton"
android:text="September"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/octButton"
android:text="October"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/novButton"
android:text="November"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/decButton"
android:text="December"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>
</RelativeLayout>
</LinearLayout>
</HorizontalScrollView>

<HorizontalScrollView
android:id="@+id/horizontalBarWeeklyBellow"
android:layout_width="match_parent"
android:layout_height="100px"
android:layout_below="@+id/divider"
android:layout_alignParentStart="true"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mondayButton"
android:text="Monday"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tuesdayButton"
android:text="Tuesday"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:id="@+id/wednesdayButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5px"
android:background="@android:color/transparent"
android:text="Wednesday"
android:textAllCaps="false"
android:textStyle="normal" />

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/thursdayButton"
android:text="Thursday"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fridayButton"
android:text="Friday"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/saturdayButton"
android:text="Saturday"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sundayButton"
android:text="Sunday"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>

</RelativeLayout>

</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>


<WebView
android:id="@+id/web_view_wb_quick_view_consumption"
android:layout_width="match_parent"
android:layout_height="400px"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_below="@id/test"
/>
</RelativeLayout>

最佳答案

来自 View documentation ,讨论检索位置的方法:

These methods both return the location of the view relative to its parent. For instance, when getLeft() returns 20, that means the view is located 20 pixels to the right of the left edge of its direct parent.



原因是 OnGlobalLayoutListener对你来说“不起作用”的技术是你的 decButton包裹在 RelativeLayout 中与 RelativeLayout 没有间距(边距/填充)的左上角。
<RelativeLayout
android:layout_width="90dp"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/decButton"
android:text="December"
android:textAllCaps="false"
android:textStyle="normal"
android:layout_marginRight="5px"
android:background="@android:color/transparent"/>
</RelativeLayout>

获取您的 Button 的绝对位置在窗口中,在您的 OnGlobalLayoutListener 中使用此代码:
int[] coords = new int[2];
decButton.getLocationInWindow(coords);
int absoluteX = coords[0];
int absoluteY = coords[1];

关于android - 按钮 getLeft() 和 getTop() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com