带有固定按钮的片段
Posted
技术标签:
【中文标题】带有固定按钮的片段【英文标题】:fragment with fixed buttons 【发布时间】:2021-10-12 05:58:07 【问题描述】:我想将(登录/注册)按钮固定在其位置,并且编辑文本位于片段中 我怎样才能做到这一点 ?我已经完成了片段部分,但我无法将(登录/注册)按钮固定在其位置
【问题讨论】:
【参考方案1】:步骤一
创建包含
的activity_main.xml-
登录和注册文本或按钮
框架布局或任何其他布局作为要被片段替换的容器
提交表单的按钮(登录或注册)
文本视图提及 OR
用于引用 Gmail 和 Facebook 的图像视图或按钮
activity_main.xml 将如下所示。 仅作为示例,您可以根据需要进行自定义
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal"
android:id="@+id/header"
android:weightSum="2">
<Button
android:layout_
android:layout_
android:layout_weight="1"
android:id="@+id/loginBtn"
android:text="Log In"/>
<Button
android:layout_
android:layout_
android:layout_weight="1"
android:id="@+id/signupBtn"
android:text="Sign Up"/>
</LinearLayout>
<FrameLayout
android:layout_
android:layout_
android:id="@+id/container"
android:layout_below="@id/header"
android:layout_above="@id/submitBtn"/>
<Button
android:layout_
android:layout_
android:id="@+id/submitBtn"
android:text="Log in"
android:layout_above="@id/ok"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"/>
<TextView
android:layout_
android:layout_
android:id="@+id/ok"
android:text="OK"
android:textSize="18sp"
android:layout_above="@id/footer"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"/>
<LinearLayout
android:layout_
android:layout_
android:id="@+id/footer"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp">
<ImageView
android:layout_
android:layout_
android:id="@+id/google"
android:background="@color/disable_state_color"
android:src="your_google_img"
android:layout_marginRight="5dp"
/>
<ImageView
android:layout_
android:layout_
android:id="@+id/facebook"
android:background="@color/disable_state_color"
android:src="your_facebook_img"
android:layout_marginLeft="5dp"
/>
</LinearLayout>
</RelativeLayout>
第二步
现在您必须创建两个 xml,一个用于登录视图 (fragment_login.xml),另一个用于注册视图 (fragment_signup.xml)
fragment_login.xml 看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<EditText
android:layout_
android:layout_
android:id="@+id/username"
android:hint="username"/>
<EditText
android:layout_
android:layout_
android:id="@+id/password"
android:hint="********"
android:inputType="textPassword"/>
<TextView
android:layout_
android:layout_
android:id="@+id/forget_pwd"
android:layout_gravity="right"
android:gravity="center"
android:text="Forget Password?"/>
</LinearLayout>
fragment_signup.xml 看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<EditText
android:layout_
android:layout_
android:id="@+id/email"
android:hint="email"
android:inputType="textEmailAddress"/>
<EditText
android:layout_
android:layout_
android:id="@+id/username"
android:hint="username"
android:inputType="text"/>
<EditText
android:layout_
android:layout_
android:id="@+id/password"
android:hint="********"
android:inputType="textPassword"/>
<EditText
android:layout_
android:layout_
android:id="@+id/confirm_password"
android:hint="********"
android:inputType="textPassword"/>
</LinearLayout>
第三步
在你的 ActivityMain 的 onCreate() 中用 FragmentLogin 替换容器
public class ActivityMain extends AppCompatActivity
Button loginBtn,signupBtn;
FragmentLogin fragmentLogin ;
FragmentSignUp fragmentSignUp ;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentLogin = new FragmentLogin();
fragmentSignUp = new FragmentSignUp ();
loginBtn= findViewById(R.id.loginBtn);
signupBtn= findViewById(R.id.signupBtn);
getSupportFragmentManager().beginTransaction().replace(R.id.container,new
FragmentLogin(),"Fragment_Login").commit();
loginBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
getSupportFragmentManager().beginTransaction().replace(R.id.container,new
FragmentLogin(),"Fragment_Login").commit();
);
signupBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
getSupportFragmentManager().beginTransaction().replace(R.id.container,new
FragmentSignUp(),"Fragment_SignUp").commit();
);
第四步
创建您的 FragmentLogin 和 FragmentSignUp
片段登录
public class FragmentLogin extends Fragment
View fragmentView;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
fragmentView = inflater.inflate(R.layout.fragment_login, container, false);
return fragmentView;
片段注册
public class FragmentSignUp extends Fragment
View fragmentView;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
fragmentView = inflater.inflate(R.layout.fragment_signup, container, false);
return fragmentView;
希望你能了解实现的基本思路
【讨论】:
非常感谢【参考方案2】:如果我理解正确,您不希望登录注册按钮被片段替换吗?
在activity中放一个固定按钮,只用片段替换变化的部分。
【讨论】:
以上是关于带有固定按钮的片段的主要内容,如果未能解决你的问题,请参考以下文章