作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
请在回答前完整阅读问题!
假设我有两种观点:
first
(黄色)在底部second
(青色)填充上方 View 的其余部分 first
父 View 的大小是动态的。
当父级高度动态设置为第一列中的值时,如何实现下面的预期列 UI?请注意部分可见的 View 是如何隐藏而不是裁剪的。
second.setVisibility(second.getHeight() < SECONDS_PREFERRED_SIZE? GONE : VISIBLE)
但我无权访问 getHeight()
所以解决方案必须是裸 xml。RemoteViews
可以轻松编写仅编写 UI 状态的代码.FrameLayout
, LinearLayout
, RelativeLayout
, GridLayout
ViewFlipper
, ListView
, GridView
, StackView
或 AdapterViewFlipper
layout_width
和 layout_height
是动态的layout_height
更改为模拟我想要处理的可能性的显示值。TextView
, 但它应该普遍适用于任何 View
RemoteViews
。 .我尝试用 RelativeLayout
来实现和 LinearLayout
, 但它们都表现为图片上的实际列。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="64dp" (actually fill_parent, but fix it for sake of simplicity)
android:layout_height="fill_parent" (first column on picture)
android:layout_gravity="center"
android:background="#666"
tools:ignore="HardcodedText,RtlHardcoded"
>
<TextView
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="#8ff0"
android:text="First"
/>
<TextView
android:id="@+id/second"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/first"
android:background="#80ff"
android:text="Second"
android:gravity="center"
/>
</RelativeLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="64dp" (actually fill_parent, but fix it for sake of simplicity)
android:layout_height="fill_parent" (first column on picture)
android:layout_gravity="center"
android:background="#666"
android:orientation="vertical"
tools:ignore="HardcodedText,RtlHardcoded"
>
<TextView
android:id="@+id/second"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#80ff"
android:text="Second"
android:gravity="center"
/>
<TextView
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:layout_gravity="right"
android:background="#8ff0"
android:text="First"
/>
</LinearLayout>
最佳答案
如果这是一个 RemoteViews/widget,请尝试使用多个布局文件。扩展AppWidgetProvider并覆盖 onAppWidgetOptionsChanged
方法。在此函数中,您需要执行以下操作:
Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
int minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
然后根据 minHeight 确定最适合膨胀的布局。 This page在制作小部件时非常有用。
关于android - 如何在没有代码的情况下隐藏 Android 布局 xml 中的部分可见 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802517/
我是一名优秀的程序员,十分优秀!