首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从旋转器选择中切换xml布局

问如何从旋转器选择中切换xml布局
EN

Stack Overflow用户
提问于 2019-01-30 01:50:24
回答 2查看 157关注 0票数 1

我正在为android开发一个简单的BMI计算器。我有磅,英尺和英寸的输入字段。我想让用户能够从帝国单位切换到公制,所以我增加了一个旋转小部件的帝国和米制作为选择。如果用户将旋转器更改为度量,我希望能够更改XML布局,以便输入字段为kg和cm。当用户在度量和帝国之间切换时,更改XML布局的最佳方法是什么?

我尝试创建一个新的活动,在用户切换到它时加载度量布局XML,但是仅仅为了切换单元创建一个新的活动似乎是一个糟糕的设计。我还尝试简单地使用setContentLayout将布局设置为metric.xml,如果spinner有米制选择,则使用imperial.xml (如果选择帝国)。这类工作,但广告和旋转小部件不再配置后,切换的布局。我仍然是android开发的新手,所以我想知道最好的方法是什么?当用户在不同的单元选项之间切换时,我只是试图做一个轻微的布局更改。任何小费都会得到赏识。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-30 02:38:37

通常,我会将所有内容放在活动布局xml文件中,并根据如下条件切换

代码语言:javascript
复制
<TextView
      android:id="@+id/feet"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:visibility="gone"/>

<TextView
      android:id="@+id/inch"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:visibility="gone"/>

在spinner适配器选择监听器中,您可以切换要显示的视图:

代码语言:javascript
复制
feet.setVisibility(View.VISIBLE)
票数 0
EN

Stack Overflow用户

发布于 2019-01-30 04:27:40

您可以使用FrameLayout。它允许您对彼此进行不同的布局(不同的视图可以位于另一个视图上)。例如:

代码语言:javascript
复制
<FrameLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:background="#FFFFFF">

    <RelativeLayout
        android:id="@+id/digital_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_marginLeft="294dp"
        android:layout_marginTop="64dp">



        <Spinner
            android:id="@+id/spinner101"
            android:layout_width="135dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/checkBox100"
            android:layout_toEndOf="@+id/textView100"
            android:visibility="visible"/>

        <TextView
            android:id="@+id/textView102"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/spinner101"
            android:text="Value pulse"
            android:textSize="20dp"
            android:visibility="visible"/>


        <TextView
            android:id="@+id/textView107"
            android:layout_width="wrap_content"
            android:layout_height="22dp"
            android:layout_alignStart="@+id/textView106"
            android:layout_below="@+id/textView103"
            android:gravity="center"
            android:text="11%"
            android:visibility="visible"/>

    </RelativeLayout>

<RelativeLayout

    android:id="@+id/analog_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/editText3"
        android:layout_width="136dp"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/spinner2"
        android:layout_below="@+id/checkBox3"
        android:ems="10"
        android:hint="Constant"
        android:inputType="textPersonName"
        android:textSize="15dp"
        android:visibility="invisible" />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/checkBox9"
        android:layout_marginLeft="20dp"
        android:onClick="onResetClick"
        android:text="Reset" />

    <View
        android:id="@+id/delitel1"
        android:layout_width="234dp"
        android:layout_height="2dp"
        android:layout_alignStart="@+id/textView7"
        android:layout_below="@+id/button6"
        android:layout_marginTop="10dp"
        android:background="#004f9b" />

    <TextView
        android:id="@+id/textView14"
        android:layout_width="135dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignTop="@+id/delitel1"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:text="Language:"
        android:textSize="20dp"
        android:visibility="invisible" />

</RelativeLayout>

​

因此,您需要为每个RelativeLayouts提供不同的id。这里有android:id="@+id/digital_layout"和android:id="@+id/analog_layout"。

在代码中,需要为您的旋转器编写处理程序:

代码语言:javascript
复制
@Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch (position) {
            case 0:
                digital_layout.setVisibility(View.INVISIBLE);
                analog_layout.setVisibility(View.VISIBLE);
            break;
            case 1:
                digital_layout.setVisibility(View.VISIBLE);
                analog_layout.setVisibility(View.INVISIBLE);
            break;
            etc.
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54432260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档