添加功能类型为onclicklistener的底栏

时间:2014-10-28 11:15:58

标签: android onclicklistener

我为底栏创建了一个xml。 使用以下代码行在其他活动xml中实现此底栏:

<include layout="@layout/bottom_bar" />

其中bottom_bar是底栏的文件xml的名称。

我创建了一个MainActivity,当我启动应用程序时,我会看到带有底栏的MainActivity内容。

如何在底栏的一个按钮中设置onclicklistener并使其在我的应用的每个活动中都有效?

这是bottom_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/footer"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="80dip"
        android:background="#ff44ff">
    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="1dip">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_marginLeft="1dip"
        android:layout_marginRight="1dip"
        android:layout_width="75dip"
        android:layout_height="75dip"
        android:background ="@drawable/icona" />

</LinearLayout>
</HorizontalScrollView>

这是MainActivity.java

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LayoutInflater layoutInflator = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        LinearLayout insertPoint = (LinearLayout) findViewById(R.id.ll_content);
        List views = new ArrayList();
        //create a dynamic view
        Iterator<Notizia> it = (Dati.listaNotizie).iterator();
        while (it.hasNext()){
            final Notizia not = it.next();

            View view = layoutInflator.inflate(R.layout.layout_notizie, null);
            TextView textView = (TextView) view.findViewById(R.id.notizieTitolo);
            int pixel = (int) (10 * getResources().getDisplayMetrics().density);
            TextView textView1 = (TextView) view.findViewById(R.id.notizieSottoTitolo);
            textView.setText(not.getTitolo());
            textView1.setText(not.getSottoTitolo());

            textView.setOnClickListener(new OnClickListener(){
                public void onClick(View v){
                Dati.setNewsListaAttuale("http://www.rhinos.it/rhinos-news/");
                SingleNewsActivity.setNotizia(not);
                Intent intent = new Intent(MainActivity.this, SingleNewsActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
                startActivity(intent);
              }
            });
            view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            views.add(view);
        }

        for(int i = 0; i<views.size(); i++)
            insertPoint.addView((View) views.get(i));
    }
}

我可以为底栏创建一个java类或函数,并在MainActivity.java中实现这个类/函数吗?

2 个答案:

答案 0 :(得分:0)

设置ID

<include android:id="@+id/bottom_bar"
layout="@layout/bottom_bar" />

然后

View bottom_bar_container = findViewById(R.id.bottom_bar); 

bottom_bar_container.findViewById(R.id.<your id name which is use inside bottom bar>);

设置点击监听器

答案 1 :(得分:0)

在布局的XML参考中设置id。

<include android:id="@+id/yourBottomBarId" layout="@layout/bottom_bar" />

然后通过引用它在活动类中获取它。

YourBottomBar bottomBar = (YourBottomBar) findViewById(R.id.yourBottomBarId);

然后引用bottomBar视图中包含的按钮。

// Unsure how you want to reference, this is one suggestion.
Button yourButton = bottomBar.getButton();
yourButton.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v) {
        // Your onClick implementation here.
    }
});