相关疑难解决方法(0)

onMeasure自定义视图说明

我试着做自定义组件.我扩展了View课程并用onDraw覆盖方法做了一些绘图.为什么我需要覆盖onMeasure?如果我没有,一切都被证明是正确的.有人可以解释一下吗?我该怎么写我的onMeasure方法?我见过几个教程,但每个教程都有点不同.有时他们会super.onMeasure在最后打电话,有时他们会使用setMeasuredDimension而不是打电话.差异在哪里?

毕竟我想要使用几个完全相同的组件.我将这些组件添加到我的XML文件中,但我不知道它们应该有多大.我希望稍后设置它的位置和大小(为什么我需要在自定义组件类时设置大小,onMeasure如果在onDraw我绘制它时也是如此).什么时候我需要这样做?

android view

305
推荐指数
3
解决办法
13万
查看次数

如何获得图像的缩放功能?

是否有一种常见的方法来显示大图像并使用户能够放大和缩小图像?

到现在为止我找到了两种方法:

  1. 覆盖ImageView,这对于这样一个常见问题似乎有点过分.
  2. 使用webview但对整体布局等的控制较少

android zoom imageview

202
推荐指数
6
解决办法
17万
查看次数

onMeasure():wrap_content,我怎么知道要包装的大小?

我已经创建了一个自定义视图,onDraw()覆盖了画布上的位图.当我在布局文件中指定我想要它wrap_content时,它仍然会填满整个屏幕.onMeasure()这样说:

measure的基类实现默认为背景大小,除非允许更大的大小MeasureSpec.子类应覆盖onMeasure(int,int)以提供更好的内容测量.

好酷,所以我知道我需要覆盖onMeasure()和使用MeasureSpec.根据这个答案

unex表示layout_width或layout_height值设置为wrap_content.你可以任意大小.

现在我遇到了我的问题,我如何onMeasure()测量我尚未创建的位图并测量/包装它?我知道其他Android视图必须做一些事情,因为如果设置为wrap_content,它们不会阻挡整个屏幕.提前致谢!

android view custom-component

14
推荐指数
2
解决办法
1万
查看次数

使用单个TableLayout而不是多个LinearLayout作为TableRow的优势仅扩展了LinearLayout

我的listview项目由三列和三行组成.我使用TableLayout.列之间的空间不统一但我通过设置margin来管理.现在布局看起来很完美.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/dp18"
    android:paddingLeft="@dimen/dp16"
    android:paddingTop="@dimen/dp18"
    android:stretchColumns="0,1,2">
    <TableRow>
        ..
    </TableRow>
    <TableRow>
        ..
    </TableRow>
    <TableRow>
        ..
    </TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)

但我想知道什么是理想的方法?如果我使用了四个LinearLayout(一个外部水平线性布局和三个内部垂直线性布局用于三列),那么在优化和性能方面会有什么不同.当TableRow扩展LinearLayout然后间接我只使用LinearLayout.

那么,使用单个TableLayout而不是多个LinearLayout有什么好处,因为TableRow只扩展了LinearLayout?

android tablelayout android-layout android-linearlayout

7
推荐指数
1
解决办法
4346
查看次数