کلیدستان

نسخه‌ی کامل: مشکل در ListView (برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
من یه لایه row ّرای لیست های لیست ویووم طراحی کردم که کد هاش به ای صورت هست...



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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:paddingLeft="10dp"
   android:paddingRight="10dp"
   android:paddingTop="10dp">

   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="@drawable/bg_btn_list"
       android:alpha="0.8">

       <LinearLayout
           android:orientation="horizontal"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:gravity="center">

           <TextView
               android:id="@+id/row_list"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="Medium Text"
               android:textSize="30dp"
               android:textColor="#D1DBBD" />
       </LinearLayout>

       <LinearLayout
           android:orientation="horizontal"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:gravity="center">

           <LinearLayout
               android:orientation="horizontal"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_gravity="center"
               android:gravity="center">

               <ImageButton
                   android:layout_width="40dp"
                   android:layout_height="40dp"
                   android:id="@+id/row_fav"
                   android:background="@drawable/bg_btn_list_btn"
                   android:layout_marginRight="10dp"
                   android:src="@drawable/ic_not_favorite"
                   android:padding="5dp" />

               <TextView
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="دقیقه"
                   android:id="@+id/row_min_text_2"
                   android:textSize="20dp"
                   android:textColor="#D1DBBD" />

               <TextView
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="2"
                   android:id="@+id/row_min"
                   android:textSize="20dp"
                   android:layout_marginLeft="5dp"
                   android:layout_marginRight="10dp"
                   android:textColor="#D1DBBD" />

               <TextView
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="زمان مورد نیاز:"
                   android:id="@+id/row_min_text_1"
                   android:textSize="20dp"
                   android:textColor="#D1DBBD" />

               <ImageButton
                   android:layout_width="40dp"
                   android:layout_height="40dp"
                   android:id="@+id/row_see"
                   android:background="@drawable/bg_btn_list_btn"
                   android:padding="5dp"
                   android:layout_marginLeft="10dp"
                   android:src="@drawable/ic_not_see" />

           </LinearLayout>

       </LinearLayout>

   </LinearLayout>


</LinearLayout>




با این کدا یه دکمه ا ین شکلی درمیاد



اینم چیدمان لایه ها که بهتر فهمیده بشه چی به چیه:




حالا مشکل اینجاست که به این طراحی رویه دکمه های لیست ویوو که کلیک میکنم کلیک نمیشه ولی وقتی یه row ساده درست میکنم مثلا به این صورت:



کد:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="10dp">

    <ImageView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:id="@+id/icon"
        android:padding="10dp"
        android:src="@drawable/ebook_launcher"
        android:focusableInTouchMode="false" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_heigh t="wrap_content"
            android:text="title"
            android:id="@+id/txtTitle"
            android:textSize="30dp"
            android:textColor="#010101" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="author"
            android:id="@+id/txtAuthor"
            android:textSize="30dp" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:id="@+id/setSee"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true" />

        <ImageView
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:id="@+id/setFav"
            android:layout_alignParentTop="true"
            android:layout_toStartOf="@+id/setSee" />
    </RelativeLayout>
</LinearLayout>



اما با این کدا برنامه مشکلی نداره و روی دکمه های لیست ویوو که تاچ میشه اکشنش اجرا میشه...


من باید طراحیم به صورت کد اولی باشه چرا تو کد اول این مشکل هست که دکمه ها تاچ نمیشه اما تو کد دوم که ساده تر هست مشکلی نیس...
توی کد اول انگار که یه لایه شیشه ای روی دکمه ها رو گرفته و نمیزاره روشون تاچ بشه.... (چیکار کنم این مشکل  رفع بشه)
ممنون میشم راهنماییم کنید.
Sad ......
کسی این مشکلو نداشته ینی؟ Sad
چه بدبختیم من پس که گیر این مشکل افتادم Tongue
سلام.
شما نگفتید که اشاره روی کل item منظورتان است، یا اشاره روی عناصر شناسایی شده از آن (ساختار کدنویسی این دو متفاوت است).
اگر منظورتان اشاره روی عناصر شناسایی شده از item ها بوده است، ابتدا کدهای (java) مربوط به شناسایی عناصر در Adapter سازنده ListView را چک کنید (بهتر است ابتدا از صحت آنها اطمینان پیدا کنید، چون مثلا در ساختار ساده ای که ذکر کردید، عناصر ImageView داشتیم، نه ImageButton).
اما اگر منظورتان اشاره بر روی کل item بوده (کد آن را نوشته اید)، نباید با تغییر فایل xml متناظر با ردیف ها، مشکلی به وجود بیاید (حداقل موردی به ذهن بنده نمی رسد).


همچنین خیلی LinearLayout های تو در تو دارید، مثلا تگ ImageButton ، در زیر 4 لایه LinearLayout قرار گرفته است (که می توان آن را به 2 تا تغییر داد) (هر چند، این موضوع نباید مشکلی به وجود بیاورد، ولی اگر درگیر فایل xml هستید، ابتدا بهتر است آن را ساده سازی کنید). بنابراین سعی کنید که LinearLayout های اضافی را بردارید (البته باید مشخصه ها را تنظیم کنید تا ساختار به هم نریزد).
مثلا اینجا :

کد پی‌اچ‌پی:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
  android:orientation="vertical"
 
  android:layout_width="fill_parent"
 
  android:layout_height="wrap_content"
 
  android:paddingLeft="10dp"
 
  android:paddingRight="10dp"
 
  android:paddingTop="10dp">

 
  <LinearLayout
       android
:orientation="vertical"
 
      android:layout_width="match_parent"
 
      android:layout_height="match_parent"
 
      android:background="@drawable/bg_btn_list"
 
      android:alpha="0.8"

دو تا LinearLayout تو در تو داریم که هر دو هم vertical می باشند (از نظر جهت یکسان هستند).
یا اینجا :

کد پی‌اچ‌پی:
<LinearLayout
   android
:orientation="horizontal"
 
  android:layout_width="match_parent"
 
  android:layout_height="match_parent"
 
  android:layout_weight="1"
 
  android:gravity="center">

 
  <LinearLayout
       android
:orientation="horizontal"
 
      android:layout_width="wrap_content"
 
      android:layout_height="wrap_content"
 
      android:layout_gravity="center"
 
      android:gravity="center"

Flower
مشکل یه جورایی حل شد میگم برا اونایی که همچین مشکلی داشتن...

من فهمیدم که از imagebutton نمیشه استفاده کنم وقتی از اون استفاده میکرم این مشکل درست میشد ولی نمیدونم چرا و چجوری میشه این مشکلو رفعش کرد...
من که imagebutton هارو برداشتم و از همون image view استفاده کردم و مشکلم حل شد...Big Grin