我目前正在为我的学期做一个小项目,当时我在设计 figma 时遇到问题,准备实施。 问题很简单,当用户按下 4 个按钮之一时,按下的按钮会被向上推,如果用户再次按下取消,它会回到原来的位置。
我确实尝试使用 3 个列表视图来解决这个问题,2 个包含其他按钮,1 个仅在按下按钮时出现,但由于我缺乏知识而失败,承认这让我很困惑。
所以如果有人能帮助我,我真的很感激,提前谢谢你。
经过几天的研究,我找到了一种方法来帮助我得到我想要的东西。其实很好笑,也很简单。
你需要的是调用包含按钮的布局,从该布局中删除子视图(按钮)并添加另一个布局。
首先在 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);
}
});
}
}