首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似<Preference/>按钮的按钮布局

类似<Preference/>按钮的按钮布局
EN

Stack Overflow用户
提问于 2011-08-07 21:24:08
回答 1查看 217关注 0票数 0

我对整个android场景都是相当陌生的,所以请容忍我。我正在尝试创建一个类似于首选项按钮的按钮布局,但我似乎无法让它正常工作。要将我的问题可视化,请看一看

at this image

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-07 22:14:24

不要使用按钮。在您的活动中使用一个ListView,它为每一行使用一个LinearLayout;LinearLayout (设置为horizontal)依次包含图像和文本。正如PravinCG所说,要填充列表,您需要使用一个自定义的ListAdapter。使用OnItemClickListener执行操作。

即:主布局:

代码语言:javascript
复制
<ListView android:id="@+id/android:list" android:layout_height="wrap_content"
    android:layout_width="match_parent"></ListView>

row_layout:

代码语言:javascript
复制
<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>

在你的activity中创建一个新的适配器(扩展行)--这段代码假设你对每个“ListActivity”(=行)都有一个"YourButtonClass“类的实例:

代码语言:javascript
复制
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()中实例化它并添加一个侦听器。

代码语言:javascript
复制
fButtonRowAdapter= new ButtonRowAdapter(this);
setListAdapter(fButtonRowAdapter);

getListView().setOnItemClickListener(...);

这就对了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6973092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档