2013-02-21 20 views
1

什麼是最好的方式來完成textview裏面的ListView滾動,當它不適合,只有當選擇內部列表視圖中的特定行。另外,我想我的文字從左邊滾動到權利,當它到達終點,從右側迴向左滾動(不是默認爲選取框一樣)當它不適合滾動(自定義選取框)textview文本內的列表視圖

XML進行的ListView行:

<TextView 
      android:id="@+id/txtWouldLikeToScroll" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 

      android:paddingBottom="1dp" 
      android:textColor="#fff" 
      android:textStyle="bold" 
      android:ellipsize="marquee" 
      android:fadingEdge="horizontal" 
      android:marqueeRepeatLimit="marquee_forever" 
      android:scrollHorizontally="true" 
      android:singleLine="true" 
      /> 

我使用的是自定義ListViewAdapter和overrided滾動聽衆:

myList.setOnScrollListener(new OnScrollListener() { 

      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, 
        int visibleItemCount, int totalItemCount) { 


       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onScrollStateChanged(AbsListView view, int scrollState) { 

       switch (scrollState) { 
       case OnScrollListener.SCROLL_STATE_IDLE: 

        view.setSelection(positionWhereIwouldLikeToPointSelection); 

        break; 
       case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: 
        break; 
       case OnScrollListener.SCROLL_STATE_FLING: 
        break; 
       } 

      } 

     }); 

    } 

我想,我必須設置的TextView被選中(一個我設置的ListView中選擇),以及不知道如何覆蓋選取框行爲。

謝謝

回答

0

你可以這樣做。

XML爲TextView

<TextView 
    android:id="@+id/label" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="marquee" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:singleLine="true" /> 

我假設你是從ListActivity擴展您的活動。請執行以下操作在您的onListItemClick

public void onListItemClick(ListView parent, View row, int position, long id) { 

    TextView textViewOne = (TextView)row.findViewById(R.id.text_view); 
    textViewOne.setSelected(true); 
    for (int i = 0; i < parent.getChildCount(); i++) { 
     if(i!=position){ 
      View view = (View) parent.getChildAt(i).findViewById(R.id.view); 

      textViewOne = (TextView)view.findViewById(R.id.text_view); 
      textViewOne.setSelected(false); 

     } 
    } 
} 
+0

可惜的是我不能設置監聽ListItemClick,因爲TextView的(ListView的行)必須是當ListView ScrollState爲Idle時(用戶正在滾動列表並且在SCROLL_STATE_IDLE上),我選擇了listView.setSelection(index)來選擇行。 – Avicena00 2013-02-21 13:25:39

1

嘗試動畫。它易於使用,並且會做什麼ü想:

<TextView 
    android:id="@+id/textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxLines="1" /> 

現在Java代碼:

private TextView mTextView... 
private Animation mAnimation... 

private void animateTextView() { 
    int textWidth = getTextViewWidth(mTextView); 
    int maxWidth = ... // Do not know what width you want. 

    /* Start animation only when text is longer than dislay width. */ 
    if(maxWidth<textWidth) { 
     mAnimation = new TranslateAnimation(
       0, displayWidth-textWidth, 
       0, 0); 
     mAnimation.setDuration(3000); // Set custom duration. 
     mAnimation.setStartOffset(500); // Set custom offset. 
     mAnimation.setRepeatMode(Animation.REVERSE); // This will animate text back ater it reaches end. 
     mAnimation.setRepeatCount(Animation.INFINITE); // Infinite animation. 

     mTextView.startAnimation(mAnimation); 
    } 
} 

private int getTextViewWidth(TextView textView) { 
    textView.measure(0, 0); // Need to set measure to (0, 0). 
    return textView.getMeasuredWidth(); 
} 
相關問題