更改 Java Android Widget 中 ImageView 的 xml 值 android:layout_marginStart
Posted
技术标签:
【中文标题】更改 Java Android Widget 中 ImageView 的 xml 值 android:layout_marginStart【英文标题】:change xml value android:layout_marginStart of ImageView in Java Android Widget 【发布时间】:2021-10-03 10:39:41 【问题描述】:我创建了一个带有 ImageView 小部件的 xml 文件,我想使用 Java 以编程方式使用 xml 值 android:layout_marginStart 更改此 ImageView 的位置。我想在 Java 中设置值并更新小部件。我怎样才能改变价值? findVIewById 不能用于小部件...
<ImageView
android:id="@+id/plane"
android:layout_
android:layout_
android:layout_marginStart="100dp" <-- i want to change this value with java code
android:contentDescription="@string/plane"
android:src="@drawable/plane"/>
【问题讨论】:
我没有在主应用程序上工作。我创建了一个应用程序小部件(如天气小部件),我想在那里更改 xml 值。 试试这个***.com/questions/15636401/… 你真的不可能在外部层次结构中访问LayoutParams
,所以这是不可能的。如果您将只有几个可能的位置,您可以在布局中放置多个<ImageView>
s,每个都位于不同的边距,并根据需要设置它们的可见性。否则,atm 唯一想到的其他事情就是使用RemoteViews#setFloat()
调用ImageView
的setX()
、setTranslationX()
等方法,但这可能不会像预期的那样运行。
我可以在 Java 中创建一个 ImageView 并将其放入小部件布局中吗?这样就会生成xml代码?
不。您对 View
创建的唯一控制是通过布局 XML,并且仍然只能在编译时生成。
【参考方案1】:
有方法remoteView.setViewPadding(left,right,top,bottom)
。确保您的 Widget 到处都有 match_parent 和 wrap_content,然后您可以轻松地使用 Padding 以编程方式更改 Image 的位置。可能您还必须添加android:cropToPadding="true"
。
【讨论】:
不错的发现。我想我从来不知道那个。此外,看起来他们已经添加了专门用于修改LayoutParams
的方法,但它们直到 API 级别 31 才可用;例如,setViewLayoutMargin()
,这正是您在这里所要求的。以上是关于更改 Java Android Widget 中 ImageView 的 xml 值 android:layout_marginStart的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式更改Chip Widget样式不起作用 - Android
渲染问题:Android Studio 1.1.0 中 android.support.v7.widget.RecyclerView 的 java.lang.NullPointerException
获取 java.lang.ClassCastException:无法强制转换 android.widget.SimpleAdapter
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextVie
安卓出现错误: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditT