Android Studio :点击时自动按下/组织按钮

2w3kk1z5  于 2023-03-06  发布在  Android
关注(0)|答案(1)|浏览(148)

我正在为我的学期做一个小项目,当我在设计figma准备实现时遇到了一个问题,问题很简单,当用户按下4个按钮中的一个时,被按下的按钮会被推高,如果用户再次按下取消,它会回到原来的位置。
图像示例:https://i.stack.imgur.com/CiOBL.jpg
我确实尝试使用3列表视图为这个问题,2包含其他按钮和1只出现时,有一个按钮被按下,但失败,由于我缺乏知识,并承认它混淆了我很多。
所以我真的很感激如果有人能帮助我这一点,谢谢你提前。

2wnc66cl

2wnc66cl1#

经过几天和更多的研究,我找到了一种方法来帮助我得到我想要的。这实际上很有趣,也很简单。
您需要的是调用包含按钮的布局,从该布局中删除子视图(按钮)并添加另一个布局。
首先你在xml中创建2个布局,在我的情况下我需要3:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    </LinearLayout>

    <LinearLayout
        android:id="@+id/two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <Button
            android:id="@+id/men"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="Mens"
            ></Button>

        <Button
            android:id="@+id/women"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="Womens"
            ></Button>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <Button
            android:id="@+id/boys"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="Boys"
            ></Button>

        <Button
            android:id="@+id/girl"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="Girls"
            ></Button>

    </LinearLayout>
    </LinearLayout>

然后调用并使用removeView、addView:

package com.example.pushbutton;

    import androidx.appcompat.app.AppCompatActivity;

    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.LinearLayout;

    public class MainActivity extends AppCompatActivity {
    Button men,women,boy,girl;
    LinearLayout one,two;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        men = findViewById(R.id.men);
        women = findViewById(R.id.women);
        boy = findViewById(R.id.boys);
        girl = findViewById(R.id.girl);
        one = findViewById(R.id.one);
        two = findViewById(R.id.two);

        men.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                two.removeView(men);
                one.addView(men);
            }
        });

    }
    }

相关问题