【问题标题】:change xml value android:layout_marginStart of ImageView in Java Android Widget更改 Java Android Widget 中 ImageView 的 xml 值 android:layout_marginStart
【发布时间】:2021-10-03 10:39:41
【问题描述】:

我创建了一个带有 ImageView 小部件的 xml 文件,我想使用 Java 以编程方式使用 xml 值 android:layout_marginStart 更改此 ImageView 的位置。我想在 Java 中设置值并更新小部件。我怎样才能改变价值? findVIewById 不能用于小部件...

<ImageView
            android:id="@+id/plane"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="100dp" <-- i want to change this value with java code
            android:contentDescription="@string/plane"
            android:src="@drawable/plane"/>

【问题讨论】:

  • 我没有在主应用程序上工作。我创建了一个应用程序小部件(如天气小部件),我想在那里更改 xml 值。
  • 你真的不可能在外部层次结构中访问LayoutParams,所以这是不可能的。如果您将只有几个可能的位置,您可以在布局中放置多个&lt;ImageView&gt;s,每个都位于不同的边距,并根据需要设置它们的可见性。否则,atm 唯一想到的其他事情就是使用RemoteViews#setFloat() 调用ImageViewsetX()setTranslationX() 等方法,但这可能不会像预期的那样运行。
  • 我可以在 Java 中创建一个 ImageView 并将其放入小部件布局中吗?这样就会生成xml代码?
  • 不。您对 View 创建的唯一控制是通过布局 XML,并且仍然只能在编译时生成。

标签: android xml widget imageview margins


【解决方案1】:

有方法remoteView.setViewPadding(left,right,top,bottom)。确保您的 Widget 到处都有 match_parent 和 wrap_content,然后您可以轻松地使用 Padding 以编程方式更改 Image 的位置。可能您还必须添加android:cropToPadding="true"

【讨论】:

  • 不错的发现。我想我从来不知道那个。此外,看起来他们已经添加了专门用于修改 LayoutParams 的方法,但它们直到 API 级别 31 才可用;例如,setViewLayoutMargin(),这正是您在这里所要求的。
猜你喜欢
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
相关资源
最近更新 更多