我想添加相同的水平可滚动的按钮行,如下所示

<HorizontalScrollView [...]>
  <LinearLayout [...] android:orientation="horizontal">
    <Button android:id="@+id/btn1" [..] />
    <Button [..] />
     [...]
  </LinearLayout>
</HorizontalScrollView>

(toolbar.xml)位于应用程序中每个活动的底部。不必为每个活动中的每个按钮指定单击侦听器,我希望能够在一个地方完成所有这些操作,然后每次都导入控件。我想我可以做些
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
 <com.example.ButtonBar android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:layout_alignParentBottom="true"
    android:layout_below="@+id/pagecontent" />
 <LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/pagecontent">

    <!-- the rest of each activity's xml -->

 </LinearLayout>

在屏幕上包含按钮栏,然后执行如下操作
package com.example;

import android.content.Context;
import android.content.Intent;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.HorizontalScrollView;

public class ButtonBar extends HorizontalScrollView implements OnClickListener
{

  public ButtonBar(Context context, AttributeSet attrs)
  {
    super(context, attrs);
    LayoutInflater inflater =
        (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.toolbar, null);

    Button btn1 = (Button) view.findViewById(R.id.button1);
    btn1.setOnClickListener(this);

    // and so on for the rest of the buttons

    addView(View);
  }

  @Override
  public void onClick(View v)
  {
    Intent intent = null;

    if (v.getId() == R.id.btn1)
    {
      intent = new Intent(getContext(), FirstScreen.class);
    }
    else if  (v.getId() == R.id.btn2)
    {
      intent = new Intent(getContext(), SecondScreen.class);
    }
    // and so on

    if (intent != null) getContext().startActivity(intent);
  }
}

但那又怎样?我怎么才能真正让它显示出来?还有其他方法我应该重写吗?有没有更好/更合适的方法来做这件事?

最佳答案

请查看我的应用程序bbc news中的自定义控件ProgressView,以及一个使用它的布局。
http://svn.jimblackler.net/jimblackler/trunk/workspace/NewsWidget/src/net/jimblackler/newswidget/ProgressView.java
http://svn.jimblackler.net/jimblackler/trunk/workspace/NewsWidget/res/layout/progress_view.xml
http://svn.jimblackler.net/jimblackler/trunk/workspace/NewsWidget/res/layout/main.xml

关于android - 从xml创建自定义 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5756642/

10-10 08:15