制作"类似设置"布局中的按钮

时间:2018-02-14 09:38:13

标签: android android-layout android-button

我是Android开发人员的新手,请求帮助。

我想做"类似设置" (我的应用程序中的全宽,平面,带图像,带分隔符)按钮。这是一个例子: Example image from Samsung settings app

我知道"偏好"查看 - 这不是解决方案。这种按钮有原生视图吗?如果没有,那么使这个按钮成为可能的最合适的方法是什么?

更新:我已经设法使用LinearLayout自己制作按钮。您可以在下面的答案中找到我的实现。

2 个答案:

答案 0 :(得分:0)

您可以使用RecyclerView。这是xml的例子:

<LinearLayout

    ...>

    <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:id="@+id/recycler"
            android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>

</LinearLayout>

在Java中:

RecyclerView recyclerView = findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
            linearLayoutManager.getOrientation());
recyclerView.addItemDecoration(dividerItemDecoration);

recyclerView.setAdapter(new RecyclerAdapter(this, /*list of your items*/));

您必须为列表中的一个项目创建自己的RecyclerAdapter类,ViewHolder和xml。

答案 1 :(得分:0)

好的,似乎Android中没有此类按钮的原生视图。

RecyclerView和ListView无济于事,因为它们需要适配器(我不需要适配器,我只需要简单的按钮)。

所以,我决定使用线性布局制作这些按钮,这里是代码:

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?android:attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true"
    android:orientation="horizontal"
    android:padding="16dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_sim_card" />

    <Space
        android:layout_width="16dp"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="@string/action_edit" />

</LinearLayout>

制作LinearLayout android:clickable="true"android:focusable="true" (稍后你可以在代码中绑定onClickListener)因为它就像一个按钮。主要的是制作类似按钮的动画(点击时的墨水效果) - 指定背景属性: android:background="?android:attr/selectableItemBackground"