按钮布局,如<preference>按钮</preference>

时间:2011-08-07 13:24:08

标签: java android xml layout android-layout

我对整个机器人场景都很陌生,所以请耐心等待。我正在尝试创建一个像偏好按钮一样的按钮布局,但我似乎无法让它正常工作。想象一下我的问题,看一看 at this image

我想创建像这样的按钮,图像和所有,提前感谢。

1 个答案:

答案 0 :(得分:0)

不要使用按钮。在活动中使用ListView,每行使用一个LinearLayout; LinearLayout(设置为水平)依次包含图像和文本。为了填写列表,您可以使用PravinCG所说的自定义ListAdapter。使用OnItemClickListener进行操作。

I.e。:主要布局:

<ListView android:id="@+id/android:list" android:layout_height="wrap_content"
    android:layout_width="match_parent"></ListView>

row_layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="horizontal">

<ImageView android:layout_width="wrap_content" android:id="@+id/imageView1"
    android:src="@drawable/addevent" android:layout_height="wrap_content" android:layout_gravity="right"></ImageView>
<TextView android:id="@+id/textView1" android:text="TextView"
    android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_height="wrap_content" android:layout_gravity="center_vertical"> </TextView>

</LinearLayout>

在您的活动中创建一个新的适配器(扩展ListActivity) - 此代码假定您为每个“按钮”(=行)都有一个类“YourButtonClass”的实例:

class ButtonRowAdapter extends BaseAdapter {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v= convertView;
        if (v == null) {
            LayoutInflater vi= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v= vi.inflate(R.layout.row_layout, null);
        }
        YourButtonClass c= getItem(position);
        ((ImageView) v.findViewById(R.id.imageView1)).setImageResource(c.getImage());
        ((TextView) v.findViewById(R.id.textView1)).setText(c.getText());

        return v;
    }

    @Override
    public int getCount() {
        return <"button" count>;
    }

    @Override
    public Object getItem(int position) {
        return <"button" at position position>;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

}

最后,在onCreate()中实例化它并添加一个监听器。

fButtonRowAdapter= new ButtonRowAdapter(this);
setListAdapter(fButtonRowAdapter);

getListView().setOnItemClickListener(...);

你去。