更改方向后,RadioButton不会更改android

时间:2015-08-04 20:36:35

标签: android xml orientation landscape

我有一个radioradio,我想在方向改变时修改文本

如果方向是风景我想在按钮中画画 如果方向是肖像我想有可绘制和描述

我有2个xml(布局中的main_activty和layout_land中的main_activity) 这是代码布局/ main_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:orientation="vertical"
                tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:text="Portrait"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Btn Portrait"/>

    <RadioGroup
        android:id="@+id/btnControl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginBottom="10dp">

        <RadioButton android:id="@+id/zoom"
                     android:checked="true"
                     android:button="@null"
                     android:drawableLeft="@android:drawable/btn_plus"
                     android:drawablePadding="10dp"
                     android:paddingLeft="10dip"
                     android:gravity="center_vertical"
                     android:text="Zoom +"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"/>

        <RadioButton android:id="@+id/dim"
                     android:button="@null"
                     android:drawableLeft="@android:drawable/btn_minus"
                     android:drawablePadding="10dp"
                     android:paddingLeft="10dip"
                     android:gravity="center_vertical"
                     android:text="Zoom -"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content" />
    </RadioGroup>
</LinearLayout>

和layout-land / activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:orientation="vertical"
                tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:text="Portrait"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Btn Portrait"/>

    <RadioGroup
        android:id="@+id/btnControl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginBottom="10dp">

        <RadioButton android:id="@+id/zoom"
                     android:checked="true"
                     android:button="@null"
                     android:drawableLeft="@android:drawable/btn_plus"
                     android:drawablePadding="10dp"
                     android:paddingLeft="10dip"
                     android:gravity="center_vertical"
                     android:text="Zoom +"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"/>

        <RadioButton android:id="@+id/dim"
                     android:button="@null"
                     android:drawableLeft="@android:drawable/btn_minus"
                     android:drawablePadding="10dp"
                     android:paddingLeft="10dip"
                     android:gravity="center_vertical"
                     android:text="Zoom -"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content" />
    </RadioGroup>
</LinearLayout>

这个2 xml之间的区别是属性文本

以纵向模式运行应用程序时的结果

enter image description here enter image description here

以横向模式运行应用时的结果

enter image description here enter image description here

当我改变方向时,radiobutton没有发生任何事情,而另一个视图改变了

我想在没有代码java的情况下这样做,是否可能?

提前谢谢

1 个答案:

答案 0 :(得分:0)

默认情况下,res/layout文件夹中的所有布局都应用于纵向和横向版本。

您需要做的是对于您希望拥有横向替代方案的任何布局,您需要复制它并将其放在横向文件夹中,如下所示:

如果您有例如:

res/layout/main.xml

然后,您需要在名为res的{​​{1}}下添加另一个文件夹,该文件夹将充当您所有layout-land的横向版本。然后,您需要将main.xml的横向版本移动到新文件夹中。

你应该得到两个版本的文件,portrait-res / layout / main.xml:

Activities

and landscape - res / layout-land / main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    <RadioGroup
        android:id="@+id/btnControl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton android:id="@+id/shutdown"
            style="@style/radioButton"
            android:text=""
            android:checked="true"
            android:drawableLeft="@drawable/btn_shutdown"
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

    </RadioGroup>
</LinearLayout>

启动应用并同时实现这两个布局文件及其文件夹后,只要<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" <RadioGroup android:id="@+id/btnControl" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton android:id="@+id/shutdown" style="@style/radioButton" android:text="Description button" android:checked="true" android:drawableLeft="@drawable/btn_shutdown" android:drawablePadding="10dp" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RadioGroup> </LinearLayout> 翻转到横向,布局就会切换到Activity中的布局。希望这会有所帮助,让您更好地了解如何实现景观布局。