2016-04-20 23 views
0

我想讓大馬架滑塊佈局可點擊。我在SliderLayout上設置了OnClickListener,但它不起作用。我也在xml中設置了可點擊的true,但仍然不起作用。我可以讓com.daimajia.slider.library.SliderLayout在片段中可點擊

這裏我的代碼: -

<RelativeLayout 
    android:id="@+id/relative_slider" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:addStatesFromChildren="true" 
    android:clickable="true" 
    android:duplicateParentState="true" 
    android:focusable="true"> 

    <com.daimajia.slider.library.SliderLayout 
     android:id="@+id/slider" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     custom:indicator_visibility="visible" /> 

</RelativeLayout> 

我的片段: -

mDemoSlider = (SliderLayout)rootView.findViewById(R.id.slider); 
mDemoSlider.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast.makeText(getContext(),"click",Toast.LENGTH_LONG).show(); 
     int pos = mDemoSlider.getCurrentPosition(); 
     int id = image_link.get(pos); 
     if(id!=0){ 
      Intent intent = new Intent(getContext(),ProductsCategory.class); 
      intent.putExtra("category",id+""); 
      startActivity(intent); 
     } 
    } 
}); 

回答

3

com.daimajia.slider.library已經有一個內置的事件。 只有在添加滑塊名稱時纔可用。您應該爲每個滑塊添加名稱。

HashMap<String,String> url_maps = new HashMap<String, String>(); 
     url_maps.put("Hannibal", "http://static2.hypable.com/wp-content/uploads/2013/12/hannibal-season-2-release-date.jpg"); 
     url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png"); 
     url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg"); 
     url_maps.put("Game of Thrones", "http://images.boomsbeat.com/data/images/full/19640/game-of-thrones-season-4-jpg.jpg"); 

     for (String name : url_maps.keySet()) { 
      TextSliderView textSliderView = new TextSliderView(getContext()); 
      // initialize a SliderLayout 
      textSliderView 
        .description(name) 
        .image(url_maps.get(name)) 
        .setScaleType(BaseSliderView.ScaleType.Fit) 
        .setOnSliderClickListener(this); 

      //add your extra information 
      textSliderView.bundle(new Bundle()); 
      textSliderView.getBundle() 
        .putString("extra", name); 

      mDemoSlider.addSlider(textSliderView); 
     } 

上的文字滑塊視圖

textSliderView.setOnSliderClickListener(this); 

和實施BaseSliderView.OnSliderClickListener.then我們可以覆蓋下面的代碼

@Override 
    public void onSliderClick(BaseSliderView slider) { 
//do something 
    } 
+0

您必須**實現BaseSliderView.OnSliderClickListener **你的片段,然後你可以重寫onSliderClick,這個答案是正確的。 –

+0

@DamiánGonzálezFernández我忘了補充一點,謝謝。 –

1

我想補充的答案。值得注意的是,關於方法:

@Override 
    public void onSliderClick(BaseSliderView slider) { 
     //do something 
} 

用這種方法調用收到BaseSliderView可能不是你剛剛點擊當前的滑塊。您必須顯式調用getCurrentSlider()方法來獲取您之前附加的包。例如:

@Override 
    public void onSliderClick(BaseSliderView slider) { 
     BaseSliderView clickedSlide = sliderLayout.getCurrentSlider(); 
     //get bundles attached and or do something else 
}