自定义Listview点击问题

时间:2012-02-10 00:53:36

标签: android android-listview

我有一个自定义列表视图,但是当我点击一个项目时我遇到了一个奇怪的问题:它只在我单击文本本身时响应,它不能在整个“矩形”上工作

这是我的listelement.xml

<?xml version="1.0" encoding="utf-8"?>


<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:minHeight="20dip"
/>

这是java代码:

public class TabFragment5 extends ListFragment {
/** (non-Javadoc)
 * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
 */
String[] month ={
           "January                     ", 
           "February", 
           "March", 
           "April",
           "May", 
           "June", 
           "July", 
           "August",
           "September", 
           "October", 
           "November", 
           "December"
         };



         @Override
         public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          ListAdapter myListAdapter = new ArrayAdapter<String>(
            getActivity(),
            R.layout.listelement,
            month);
          setListAdapter(myListAdapter);
         }

         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {
          return inflater.inflate(R.layout.tab_frag5_layout, container, false);
         }

         @Override
         public void onListItemClick(ListView l, View v, int position, long id) {
          // TODO Auto-generated method stub
          Toast.makeText(
            getActivity(), 
            getListView().getItemAtPosition(position).toString(), 
            Toast.LENGTH_LONG).show();
         }
        }

没关系这个愚蠢的程序,我现在只是在运行一个教程。有关如何使其在整个列表项矩形上工作的任何提示?感谢

2 个答案:

答案 0 :(得分:1)

在那里添加一个填充父级的视图,因为列表对象中唯一的对象是TextView,它是唯一可以按下的东西,尝试这样的事情:

<LinearLayout android:id="@+id/linearLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">


        <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/text1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="15dip"
            android:textSize="25sp"/>

    </LinearLayout>

答案 1 :(得分:1)

ListFragment中已经有一个ListView,因此您可能不需要从onCreateView中扩展布局,除非您在其中创建一个包含ListView的自定义布局。我想你的问题在于tab_frag5_layout的布局。无论你在ListView中包装什么,都可能缩小ListView的宽度。

将onCreate和onCreateView合并到onActivityCreated实现中,对我有用。

@Override
public void onActivityCreated(Bundle savedInstanceState)
{          
  super.onActivityCreated(savedInstanceState);

  ListAdapter myListAdapter = new ArrayAdapter<String>(
        getActivity(),
        R.layout.listelement,
        month);
  setListAdapter(myListAdapter);

}