gpt4 book ai didi

android - 是否可以将可滚动的 TextView 添加到 ListView?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:05 25 4
gpt4 key购买 nike

我有一个 ListView,其中每一行都有固定的高度。
每行包含一些图像旁边的 TextView。
有时,我想显示的文本太大,因此我想让它可以滚动。
所以我添加(基于 Making TextView scrollable on Android )以下几行到我的 TextView

text.setMaxLines(5);
text.setVerticalScrollBarEnabled(true);
text.setMovementMethod(ScrollingMovementMethod.getInstance());

如果我单独使用 TextView 但当我将 TextView 放在 ListView 中时则不行:
一旦我进行垂直滚动,事件似乎就会被 ListView 消耗掉。

关于如何使这项工作有任何建议吗?

下面添加了完整的(测试)activity(没有layout.xml)

public class TestScrollableTextView extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

LinearLayout layout = new LinearLayout(this);
//add a ListView
ListView list = new ListView(this);
layout.addView(list);
list.setAdapter(new BaseAdapter()
{

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
TextView text = new TextView(TestScrollableTextView.this);
String s = "";
//add 10 lines of text, all but first are indented
for (int i = 0; i < 10; i++)
{
if(i>0) s+="\t";
s += "position "+position+"; line="+i+"\n";
}
text.setText(s);
text.setMaxLines(5);
text.setVerticalScrollBarEnabled(true);
text.setMovementMethod(ScrollingMovementMethod.getInstance());
return text;
}

@Override
public long getItemId(int position)
{
return 0;
}

@Override
public Object getItem(int position)
{

return null;
}

@Override
public int getCount()
{
return 20;
}
});

setContentView(layout);

}
}

最佳答案

getLineCount 和 getLineHieght 并检查 Text 是否大于 TextView。

如果您使用此代码,则可以通过使用 (boolean)isLarger = true 触摸 TextView 以外的任何地方来滚动 listView。

text.setText(s);                
text.setMaxLines(100);
text.setVerticalScrollBarEnabled(true);
text.setMovementMethod(new ScrollingMovementMethod());
OnTouchListener listener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
boolean isLarger;

isLarger = ((TextView) v).getLineCount()
* ((TextView) v).getLineHeight() > v.getHeight();
if (event.getAction() == MotionEvent.ACTION_MOVE
&& isLarger) {
v.getParent().requestDisallowInterceptTouchEvent(true);

} else {
v.getParent().requestDisallowInterceptTouchEvent(false);

}
return false;
}
};

text.setOnTouchListener(listener);

关于android - 是否可以将可滚动的 TextView 添加到 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8121491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com