android - 如何在布局上的 2 个 TextView 位置之间切换?

标签 android android-layout textview

我有一个 OnClickListener 可以监听 Button A 的点击。我在 Button 下方也有 2 个 TextViews

我希望每次点击 Button A 时,2 个 TextViews 都会在它们之间切换它们的位置,如下所示:

点击前:

TextView A
TextView B

点击后:

TextView B
TextView A

我该怎么做?是否有特殊功能可以做到这一点?还是某种把戏?谢谢!

actvity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="start"
    tools:context="com.intap.tof.MainActivity">

    <TextView
        android:id="@+id/txtA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="20dp"
        android:visibility="visible"/>

    <TextView
        android:id="@+id/txtB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/txtA
        android:layout_marginTop="83dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:visibility="visible"
        android:textSize="20dp" />
</RelativeLayout>

主要 Activity .java:

txtA = (TextView) findViewById(R.id.txtA);
txtB = (TextView) findViewById(R.id.txtB);

float mAX = txtA.getX();
float mAY = txtA.getY();
float mBX = txtB.getX();
float mBY= txtB.getY();

txtA.setX(mBX);
txtA.setY(mBY);

txtB.setX(mAX);
txtB.setY(mAY);

最佳答案

技巧是改变两个 View 的 x 轴和 y 轴: 您的 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="start"
    tools:context="com.intap.tof.MainActivity">

    <TextView
        android:id="@+id/txtA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="20dp"
        android:text="A"
        android:tag="A"
        android:clickable="true"
        android:visibility="visible"/>

    <TextView
        android:id="@+id/txtB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/txtA"
        android:text="B"
        android:tag="B"
        android:clickable="true"
        android:layout_marginTop="83dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:visibility="visible"
    android:textSize="20dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="switch"
        android:id="@+id/btn1"
        android:onClick="onClickButton"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Java 代码:

public class MainActivity extends Activity {

    TextView txtA,txtB;

    boolean _isOnTxtA;
    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtA = (TextView)findViewById(R.id.txtA);
        txtB = (TextView)findViewById(R.id.txtB);

        btn1 = (Button)findViewById(R.id.btn1);




    }
    public void onClickButton(View v)
    {

        float mPos1x,mPos1y,mPos2x,mPos2y;
        mPos1x =     txtB.getX();
        mPos1y =     txtB.getY();
        mPos2x =     txtA.getX();
        mPos2y=     txtA.getY();

        if(_isOnTxtA)
        {

            txtB.setX(mPos2x);
            txtB.setY(mPos2y);
            txtA.setX(mPos1x);
            txtA.setY(mPos1y);
            _isOnTxtA = false;
        }
        else
        {


            txtB.setX(mPos2x);
            txtB.setY(mPos2y);
            txtA.setX(mPos1x);
            txtA.setY(mPos1y);
            _isOnTxtA= true;
        }

    }
}

关于android - 如何在布局上的 2 个 TextView 位置之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510498/

相关文章:

android - Android Material Design 中的多行 EditText

android - 通过拖动重新排序 ListView 的元素

java - android中除了数字和逗号之外,如何将TextView中的任何字母设置为白色?

java.lang.UnsupportedClassVersionError : com/android/build/gradle/AppPlugin : Unsupported major. 次要版本 52.0

android - 将字符串中的英文数字转换为阿拉伯数字

android - TextView 不显示所有文本

java - 在焦点更改时将 EditText 更改为 TextView

Android TextView 和获取文本行

android - ios 中的 jQuery Mobile vclick 在不同页面中触发两次

android - 当设备在 Android 中处于 sleep 状态时,AlarmManager 警报不起作用