www.91084.com

GVKun编程网logo

计算布局后如何获取Android小部件的大小?(计算布局后如何获取android小部件的大小数据)

15

本文的目的是介绍计算布局后如何获取Android小部件的大小?的详细情况,特别关注计算布局后如何获取android小部件的大小数据的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一

本文的目的是介绍计算布局后如何获取Android小部件的大小?的详细情况,特别关注计算布局后如何获取android小部件的大小数据的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解计算布局后如何获取Android小部件的大小?的机会,同时也不会遗漏关于1 个堆叠的小部件比第二个大,如何设置每个小部件的固定大小?、android – 可以定义小部件的行为/布局,以便在第三方发射器中调整大小和方向?、android – 多个小部件大小、android – 如何增加雷达图MPAndoid图表的大小?的知识。

本文目录一览:

计算布局后如何获取Android小部件的大小?(计算布局后如何获取android小部件的大小数据)

计算布局后如何获取Android小部件的大小?(计算布局后如何获取android小部件的大小数据)

我有一个布局来指定相对维度中小部件的大小,例如:
<LinearLayout ... layout_height="fill_parent">
     <ImageView ... layout_height="wrap_content" />
     <TextView ... layout_height="120dp" />
</LinearLayout>

在onCreate之后,我想知道ImageView的高度是多少.怎么做?

注意:如果我在onCreate中调用getHeight(),我得到0.

我也尝试过imageView.postDelayed,它在2.1模拟器上工作,但在1.5模拟器上失败(我也有0).

最后,我试图创建一个处理程序,然后我以10 ms的延迟调用handler.postDelayed.它在2.1和1.5模拟器中工作,但是当我在eclipse调试器中启动程序时失败(所以我得出结论,使用延迟并不能保证在viewview被布局之后发生高度).

解决方法

你得到大小为0的原因是布局在完成活动后才完成,即onCreate(),onStart()和onResume()都已经完成.我知道获得确切大小的最简单的方法是在布局完成后调用方法,例如通过在按钮上使用点击监听器.由于在布局完成之前不显示按钮,所以在触发点击侦听器的时候,该大小必须可用.

这只是一个猜测,但是我想像这是很难准确的,因为一旦系统刚刚完成屏幕布局,他们就不希望人们搞乱布局尺寸.如果他们提供了一个“onLayoutFinished()”回调,那么如果你修改了那个布局,那么你可以让自己陷入循环.例如,想象:布局完成; onLayoutFinished()被调用,你修改了那里的布局;现有布局现在无效;布局重新完成; onLayoutFinished()再次调用;你的代码再次被调用 – 等等.

另一种方法是使自定义view并覆盖onMeasure(int,int)方法.系统触发该方法获取每个视图的大小;如果您使用下面的示例,您可以在布局完成之前获取建议的大小:

@Override
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
    super.onMeasure(widthMeasureSpec,heightMeasureSpec);
    //getMeasuredHeight() and getMeasuredWidth() Now contain the suggested size
}

(我写道,这是建议的大小,因为我认为这可以根据布局约束改变大小,但是这是一个我以前读过的东西的模糊记忆,我从来没有进行过详细的实验.)一旦你做到这一点,你可以使用大小来做任何你想做的 – 甚至可以通过使用setMeasuredDimension(newX,newY)来改变它将使用的大小.

1 个堆叠的小部件比第二个大,如何设置每个小部件的固定大小?

1 个堆叠的小部件比第二个大,如何设置每个小部件的固定大小?

如何解决1 个堆叠的小部件比第二个大,如何设置每个小部件的固定大小??

我正在尝试创建一个可以从基本计算器切换到科学计算器的计算器。我被建议使用堆叠的小部件来布局按钮。但是我在小部件之间切换时遇到了问题。

主窗口的大小。主窗口默认为最大小部件的大小,因此基本计算器的按钮看起来很小,应该由科学计算器的按钮填充。下面是描绘它的图像: 基本计算器,这是第一个小部件:

Basic Calculator

vs Scientific Calculator,第二个小部件:

Scientific Calculator

编辑:

以下是我想要实现的从科学计算器切换到基本计算器(从第二个小部件到第一个小部件)的布局:

What I want the Basic Calculator look to become

以下是我在计算器上使用的基本代码示例。

import sys
from functools import cached_property,partial

from PyQt6.QtCore import QRect,Qt
from PyQt6.QtGui import QAction
from PyQt6.QtWidgets import (
    QApplication,qgridLayout,QLineEdit,QMainWindow,QMenu,QMenuBar,QPushButton,QStackedWidget,QVBoxLayout,QWidget,)


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.buttons = {}
        self.setwindowTitle("Try")

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        self.lay = QVBoxLayout(central_widget)
        self.lineedit()


        self.lay.addWidget(self.stacked_widget,alignment=Qt.AlignmentFlag.AlignCenter)

        maps = [
            {"A": (0,0),"B": (0,1),"C": (1,"D": (1,1)},# first page
            {"A": (0,"E": (0,2),"F": (0,3),"G": (1,"H": (1,3)},# second page
        ]

        for m in maps:
            page = self.create_page(m)
            self.stacked_widget.addWidget(page)

    @cached_property
    def stacked_widget(self):
        return QStackedWidget()

    def lineedit(self):
        self.le = QLineEdit()
        self.le.setFixedHeight(35)
        self.lay.addWidget(self.le)

    def set_lineedit(self,text):
        self.le.setText(text)
        self.le.setFocus()

    def line(self):
        return self.le.text()

    def create_page(self,map_letters):
        page = QWidget()
        grid_layout = qgridLayout(page)
        for name,pos in map_letters.items():
            self.buttons[name] = QPushButton(name)
            self.buttons[name].setFixedSize(20,20)
            grid_layout.addWidget(self.buttons[name],*pos)
        return page

class Menu:
    def __init__(self,MainWindow):
        super().__init__()
        self.view = MainWindow
        self.menuBar = QMenuBar()
        self.menuBar.setGeometry(QRect(0,277,22))
        self.view.setMenuBar(self.menuBar)
        self.open = QMenu(self.menuBar)
        self.open.setTitle("Open")
        self.menuBar.addAction(self.open.menuAction())
        self.this = QAction(self.menuBar)
        self.this.setText("This")
        self.this.setCheckable(True)
        self.open.addAction(self.this)

        self.this.triggered.connect(self.show_new_window)

    def show_new_window(self,checked):
        self.view.stacked_widget.setCurrentIndex(1 if checked else 0)

class Controller:

    def __init__(self,MainWindow):

        self.view = MainWindow
        self.connectSignals()

    def buildExpression(self,sub_exp):

        expression = self.view.line() + sub_exp
        self.view.set_lineedit(expression)

    def connectSignals(self):

        for btnText,btn in self.view.buttons.items():
            btn.clicked.connect(partial(self.buildExpression,btnText))



app = QApplication(sys.argv)
w = MainWindow()
Controller(w)
m = Menu(w)
w.show()
app.exec()

如何设置堆叠小部件中每个小部件的固定大小?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – 可以定义小部件的行为/布局,以便在第三方发射器中调整大小和方向?

android – 可以定义小部件的行为/布局,以便在第三方发射器中调整大小和方向?

我似乎无法找到任何关于我想要编写代码的小部件的问题:
除了在Android 3.1中引入的调整大小能力之外,我希望我的小部件可以在LauncherPro或ADWLauncher等自定义启动器中调整大小.有没有办法可以定义我的小部件一旦调整大小后如何更改其布局?因此,例如,按钮A在左侧显示为2×1,但在右侧显示为3×3.
此外,我希望它更改其外观/布局,因为屏幕旋转小部件大小更改(因为例如3×1在横向和纵向中具有不同的高度和宽度).

任何提示都会有所帮助.
非常感谢!
直到

解决方法:

Is there a way I can define how my widget changes its layout once it’s resized?

一旦调整大小,您的应用小部件就不会更改其布局.

So, for example, button A is shown on the left for 2×1 but is shown on te right for 3×3.

这不是可调整大小的应用程序小部件的目的.调整大小是为了使用ListView,GridView等,它将吸收额外的可滚动空间.

Also I want it to change its appearance/layout when due to screen rotation the widget size changes (because e.g. 3×1 has different height and width in landscape and portrait).

为此,您应该能够使用标准方向资源集(例如,res / layout /和res / layout-land /).

android – 多个小部件大小

android – 多个小部件大小

我在网上搜索但没有任何帮助.我想制作第二个小部件,只是更大.我使用服务来更新我的小部件所以我需要创建2个服务(通过远程视图等更新小部件中的数据)或者我可以更容易吗?

当我添加媒体小部件时,它显示小的一个,但它需要更多的空间(144dp x 72dp),并且没有更新.也许我应该复制整个应用程序类并对其进行修改,但我认为这是一个愚蠢的解决方案.

我正在尝试这个解决方案

how to add multiple widgets in one app?

How to put multiple widget sizes in one apk?

任何提示?

android – 如何增加雷达图MPAndoid图表的大小?

android – 如何增加雷达图MPAndoid图表的大小?

我想增加MPAndroid Radar Chart的大小.我观察到当我增加图表本身的大小时,大小会逐渐增加,但我希望区域相同,只需增加图表大小.

enter image description here


添加以下代码后:

mChart.setScaleY(1.2f);
mChart.setScaleX(1.2f);

它正在流离失所

enter image description here

解决方法:

我认为我们可以使用一点点黑客来做到这一点.我从未在雷达图表上工作,但如果它支持缩放,那么我们可以在创建它时根据我们的要求进行缩放.你必须再次测试它我不确定它是否会起作用.这只是一个想法.如果你以我的目的这样做,请告诉我.

缩放(以编程方式)

zoomIn():放大1.4f,进入图表中心.

zoomOut():从图表中心缩小0.7f.

zoom(float scaleX,float scaleY,float x,float y):按给定的比例因子放大或缩小. x和y是变焦中心的坐标(以像素为单位).请记住,1f =无缩放比例.

zoom(float scaleX,float scaleY,float xValue,float yValue,AxisDependency axis):按给定的比例因子放大或缩小. xValue和yValue是缩放中心的实际数据值(不是像素).请记住,1f =无缩放比例.

关于计算布局后如何获取Android小部件的大小?计算布局后如何获取android小部件的大小数据的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于1 个堆叠的小部件比第二个大,如何设置每个小部件的固定大小?、android – 可以定义小部件的行为/布局,以便在第三方发射器中调整大小和方向?、android – 多个小部件大小、android – 如何增加雷达图MPAndoid图表的大小?的相关信息,请在本站寻找。

本文标签: