【发布时间】:2015-01-18 12:37:47
【问题描述】:
我有一个在我的 Activity 中使用的布局。我想在 onConfigurationChanged 中以编程方式将 TextView 重新定位到不同的位置。
以下布局适用于纵向模式。当 orientation 改变时,我希望将 ID 为 elapsedTime 的 TextView 移动到 ID 为 baseTime 的 TextView 旁边以用于 横向模式,然后在纵向模式下回到同一位置。这是否可以通过编程方式实现?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/primary_call_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="center"
android:orientation="vertical"
>
<LinearLayout
android:id="@+id/callerName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal">
<TextView
android:id="@+id/baseTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:singleLine="true"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/labelContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/labelAndNumber"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
/>
<TextView
android:id="@+id/phNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:singleLine="true"
/>
<TextView
android:id="@+id/elapsedTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:singleLine="true"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
【问题讨论】:
-
您是否尝试过为纵向和横向使用不同的布局 xml?
-
我不希望我的活动被完全杀死并重新启动。在横向模式下,我想隐藏 ID 为 labelContainer 的 LinearLayout 并将 ID 为 elapsedTime 的 TextView 移动到 ID 为 baseTime 的 TextView 旁边.
-
在这种情况下,您可能需要在 onConfigurationChanged() 方法中设置视图的布局参数。
-
我现在将其更改为RelativeLayout 并尝试获取layoutParams,如果您有关于如何以编程方式将TextView 从一个RelativeLayout 移动到另一个RelativeLayout 的示例代码,请给我一个示例代码?
-
与其移除视图,不如将文本视图放在两个相对布局中并根据方向更改它们的可见性。
标签: android layout android-activity orientation