在低于棒棒糖的设备中,Cardview无法正常工作

时间:2017-09-29 04:57:07

标签: android android-cardview

此屏幕截图是在Marshmallow中拍摄的

enter image description here

这个是在果冻豆中拍摄的,图像没有显示,菜单中的文字不可见

enter image description here

我有一个使用Cardview作为父视图的布局。

它由图像和文本组成。 现在布局在Android M及以上版本的设备上运行良好,但在较低版本(如Jellybean)中,图像显示不正确。它们变小并且不完全匹配卡片视图

这是我的布局XML文件:

<android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            app:cardPreventCornerOverlap="false"
            android:elevation="2dp">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:orientation="horizontal">

                <android.support.v7.widget.CardView
                    android:layout_width="80dp"
                    android:layout_height="80dp">

                    <ImageView
                        android:id="@+id/home_news_image"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_gravity="center_vertical"
                        android:scaleType="centerCrop"
                        android:src="@drawable/jesus" />
                </android.support.v7.widget.CardView>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:gravity="center_vertical"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/home_title_parish_news"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="5dp"
                        android:paddingLeft="1dp"
                        android:text="Christmas Celebration"
                        android:textSize="14dp"
                        android:textStyle="bold" />

                    <TextView
                        android:id="@+id/home_short_description"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:ellipsize="end"
                        android:maxLines="1"
                        android:padding="3dp"
                        android:text="hi this is to tell thlkdsa asdsag slk sg sdg sdgjs gsd gsg jglsgja gasjggjasg asgjasgj sgjasg g g"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/home_date_published"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginRight="10dp"
                        android:gravity="right|bottom"
                        android:padding="3dp"
                        android:text="10/10/2010"
                        android:textSize="8dp" />
                </LinearLayout>
            </LinearLayout>
        </android.support.v7.widget.CardView>

这是我初始化布局和视图的适配器

public class MenuAdapter extends BaseAdapter {

    Context mContext;
    ArrayList<MenuModel> list;
    String img;


    public MenuAdapter(Context c, ArrayList<MenuModel> list) {
        mContext = c;
        this.list = list;

    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return i;
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View grid;
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (view == null) {
            grid = inflater.inflate(R.layout.home_grid_menu, null);
            TextView textView = (TextView) grid.findViewById(R.id.home_grid_text);
            ImageView imageView = (ImageView) grid.findViewById(R.id.home_grid_image);
            textView.setText(list.get(i).getMenuName());
            imageView.setImageResource(list.get(i).getMenuImage());

        } else {
            grid = (View) view;
        }

        return grid;
    }
}

此外,如果我在图像下放置文字,则文字不可见。

请建议我如何去做。

我希望现在能得到一些解决方案

2 个答案:

答案 0 :(得分:2)

首先你需要从android中的assets文件夹中读取文件这里是如何从assets文件夹中读取html文件的例子

InoutInputStream is = getAssets().open("yourfile.html");
int size = is.available();

byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String str = new String(buffer);

你现在需要在字符串中有html文件,你需要使用HTML.fromhtml从html文件中获取文本。

String htmltext=Html.fromHtml(Html.fromHtml(str).toString())

如果你想分享html文本,那么你可以使用android intent

分享文本
    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Sharing html Text");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, htmltext);
    startActivity(Intent.createChooser(sharingIntent, "Select"));

答案 1 :(得分:0)

卡片视图正常启动棒棒糖,它们具有向后支持但渲染通常不一样。

对于特定问题,请附上两个屏幕的图像