如何同时使navigationdrawer选框的listview中的所有textView?

Posted

技术标签:

【中文标题】如何同时使navigationdrawer选框的listview中的所有textView?【英文标题】:how to make all the textView in a listview of a navigationdrawer marquee simultaneously? 【发布时间】:2015-03-07 14:23:59 【问题描述】:

在我的应用程序中,我有一个Navigation DrawerNavigatinDrawer' has anImageView,TextViewand anotherTextViewwith idtv_navDrawerOptionDescription 的ListView,如下所示。

导航抽屉的ListView中的项目数是三个项目(eco-assist,data-logger-exit),每个项目都有ImageView,TextView“作为标题”,另一个TextView“作为描述”

我想要做的是,当抽屉打开时,我在NavigationDrawer ListView 中拥有的三个项目的所有“描述TextView”应该永远水平旋转为marquee

当我运行应用程序时。我发现textview 的描述是静态的而不是旋转的

我的尝试发布在下面 navigationDrawer 的列表视图布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/list_selector">

<ImageView 
    android:id="@+id/iv_navDrawerOptionImage"
    android:layout_
    android:layout_
    android:layout_alignParentStart="true"
    android:layout_marginLeft="12dp"
    android:layout_marginRight="12dp"
    android:contentDescription="@string/desc_list_item_icon"
    android:layout_centerVertical="true"/>

<TextView 
    android:id="@+id/tv_navDrawerOptionTitle"
    android:layout_
    android:layout_ 
    android:layout_toEndOf="@id/iv_navDrawerOptionImage"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:textColor="@color/list_item_title"
    android:gravity="center_vertical"/>

  <TextView 
    android:id="@+id/tv_navDrawerOptionDescription"
    android:layout_below="@id/tv_navDrawerOptionTitle"
    android:singleLine="true"
    android:lines="1"
    android:ellipsize="marquee"
    android:fadingEdge="horizontal"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:layout_
    android:layout_/>

NavigationDrawer ListAdapter

public class NavDrawerListAdapter extends BaseAdapter

private Context context;
private ArrayList<NavDrawerModell> navDrawerModel;

public NavDrawerListAdapter(Context context, ArrayList<NavDrawerModell> navDrawerModell) 
    // TODO Auto-generated constructor stub
    this.context = context;
    this.navDrawerModel = navDrawerModell;


@Override
public int getCount() 
    // TODO Auto-generated method stub
    return this.navDrawerModel.size();


@Override
public Object getItem(int position) 
    // TODO Auto-generated method stub
    return this.navDrawerModel.get(position);


@Override
public long getItemId(int position) 
    // TODO Auto-generated method stub
    return position;


@Override
public View getView(int position, View convertView, ViewGroup parent) 
    // TODO Auto-generated method stub
    if (convertView == null) 
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.drawer_list_layout, null);
    

    ImageView iv_Icon = (ImageView) convertView.findViewById(R.id.iv_navDrawerOptionImage);
    TextView tv_Title = (TextView) convertView.findViewById(R.id.tv_navDrawerOptionTitle);
    TextView tv_Desc = (TextView) convertView.findViewById(R.id.tv_navDrawerOptionDescription);

    iv_Icon.setImageResource(navDrawerModel.get(position).getIcon());
    tv_Title.setText(navDrawerModel.get(position).gettitle());
    tv_Desc.setText(navDrawerModel.get(position).getDescription());

    return convertView;
  
  

【问题讨论】:

【参考方案1】:
<TextView
android:id="@+id/tv_navDrawerOptionDescription"
android:layout_below="@id/tv_navDrawerOptionTitle" 
android:layout_
android:layout_ 
android:singleLine="true"
android:ellipsize="marquee" 
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true">

请尝试上面的代码,看看是否可行。

编辑:

在子类BaseAdapter的getView函数中添加如下代码:

tv_Desc.setText(navDrawerModel.get(position).getDescription());
tv_Desc.setSelected(true);
tv_Desc.requestFocus();

【讨论】:

"android:focusable="true" android:focusableInTouchMode="true" 使navigationdrawer 的listview 冻结,这样我就无法选择listView 中的任何其他项目。我也试过这两个行。我添加了“android:freezesText="true",这些不是选框文本仍然是静态的 这个想法是正确的,但需要引用的是“tv_Desc”而不是“tv_Title”。只需将您的分析器编辑为“tv_Desc”而不是“tv_title” 还有一个错误,是“getDescription”而不是“gettitle”:)

以上是关于如何同时使navigationdrawer选框的listview中的所有textView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在进行选择之前使我的代码中的复选框默认为未选中,同时保持我的功能相同?

jquery 如何获取单选框的值?

如何的制作带有多选框的treeview?

MFC中如何取消已选单选框的勾选状态?

如何在DevExpress的GridView控件里面添加多选框的列

如何获取多选框的所有选定值?