如何设置WearableListView项高度

时间:2015-08-10 00:48:16

标签: android android-listview wear-os

我制作WearableListView列表。问题是设置android:layout_height =" 20dp"没有帮助 enter image description here

在这种情况下如何设置高度?在Android Wear示例项目Notifications and Timer中,他们也只设置了一个android:layout_height =" 80dp"。但是我试着设置android:layout_height =" 20dp"但它没有帮助! (下面是我的项目源代码):

list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<base.mobitee.com.mobiteewatch.adapter.HolesListItemLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:gravity="center_vertical" >

    <TextView
        android:id="@+id/text_hole"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif-light"
        android:gravity="center"
        android:textSize="@dimen/list_item_text_size" />
</base.mobitee.com.mobiteewatch.adapter.HolesListItemLayout>

HolesListItemLayout.java:

公共类HolesListItemLayout扩展了LinearLayout         实现WearableListView.OnCenterProximityListener {     private TextView mName;     private final int mFadedTextColor;     private final int mChosenTextColor;

public HolesListItemLayout(Context context) {
    this(context, null);
}

public HolesListItemLayout(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public HolesListItemLayout(Context context, AttributeSet attrs,
                           int defStyle) {
    super(context, attrs, defStyle);
    mFadedTextColor = getResources().getColor(R.color.grey);
    mChosenTextColor = getResources().getColor(R.color.black);
}

// Get references to the icon and text in the item layout definition
@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    mName = (TextView) findViewById(R.id.text_hole);
}

@Override
public void onCenterPosition(boolean animate) {
    mName.setTextSize(18);
    mName.setTextColor(mChosenTextColor);
}

@Override
public void onNonCenterPosition(boolean animate) {
    mName.setTextColor(mFadedTextColor);
    mName.setTextSize(14);
}

}

HolesListAdapter.java:

public class HolesListAdapter extends WearableListView.Adapter {
    private final Context mContext;
    private final LayoutInflater mInflater;

    public HolesListAdapter(Context context) {
        this.mContext = context;
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new WearableListView.ViewHolder(
                mInflater.inflate(R.layout.list_item_hole, null));
    }

    @Override
    public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
        TextView text = (TextView) holder.itemView.findViewById(R.id.text_hole);
        text.setText(mContext.getString(R.string.hole_list_item) + " " + (position + 1));
        text.setTextColor(mContext.getResources().getColor(android.R.color.black));
        holder.itemView.setTag(position);
    }

    @Override
    public int getItemCount() {
        return Preferences.HOLES;
    }
}

3 个答案:

答案 0 :(得分:6)

WearableListView被硬编码为一次只显示三个项目 - 它通过将列表视图的高度除以3来测量项目高度...因此没有实际的方法来做你想要的。

我建议将文字字体放大......

答案 1 :(得分:-1)

我有点想法。将列表插入FrameLayout容器。并通过更改容器列表项高度更改高度。结果:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:layout_centerInParent="true">

        <android.support.wearable.view.WearableListView
            android:id="@+id/wearable_list_game_options"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:dividerHeight="0dp"
            android:scrollbars="none"/>
    </FrameLayout>

</RelativeLayout>

enter image description here

答案 2 :(得分:-1)

在里面添加一个LinearLayout并设置

机器人:layout_height = “50dp”   机器人:layout_margin = “5DP”