简单的网格视图与按钮

时间:2017-09-02 17:27:18

标签: c# visual-studio xamarin.android

如何使用按钮制作简单的网格视图?我尝试过最明显的解决方案,但它不起作用。教程非常糟糕(对我而言),简单的解决方案不起作用。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <GridView
      android:id="@+id/gridView"
      android:layout_width="match_parent"
      android:layout_height="155.5dp"
      android:numColumns="2"
      android:padding="10dp"
      android:layout_marginBottom="68.0dp"
      android:background="#009967">
      <Button
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button1" />
  </GridView>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

GridViewsListViewsAdapterViews是android&#39; s BaseAdapter的子类。这意味着它们没有子元素,并且使用扩展GridActivity类的自定义适配器以编程方式动态创建它们。

Android AdapterViews

要执行您需要的操作,请先创建一个空活动并将其命名为GridView。将activity_grid.xml布局文件编辑为空<?xml version="1.0" encoding="utf-8"?> <GridView 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" tools:context="com.example.user.gridbuttonview.GridActivity" android:columnWidth="90dp" android:id="@+id/activity_grid" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:stretchMode="columnWidth" android:verticalSpacing="10dp" /> 。 示例 -

ButtonAdapter

然后在名为total_btns的项目中创建一个新类,例如以下 -

请注意,可以在变量import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.Toast; public class ButtonAdapter extends BaseAdapter { private Context mContext; private int btn_id; private int total_btns = 20; public ButtonAdapter(Context context) { this.mContext = context; } @Override public int getCount() { return total_btns; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(final int i, View view, ViewGroup viewGroup) { Button btn; if (view == null) { btn = new Button(mContext); btn.setText("Button " + (++btn_id)); } else { btn = (Button) view; } btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), "Button #" + (i + 1), Toast.LENGTH_SHORT).show(); } }); return btn; } } 中设置按钮总数,默认为20。

GridActivity

最后,更改您的onCreate课程&#39; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid); GridView gridview = (GridView) findViewById(R.id.activity_grid); gridview.setAdapter(new ButtonAdapter(this)); } 方法在创建时设置gridView。

{{1}}

这将使用按钮创建所需的网格视图。一旦触发网格活动,就会得到以下输出 -

enter image description here

可以编辑适配器类中的单击侦听器以处理每次单击。希望它有所帮助!