如何基于常见Fragment的实例隐藏TextView

时间:2017-10-20 17:38:27

标签: java android android-layout android-fragments

我正在学习android开发,我试图制作一个简单的导游应用程序。

我使用了两个不同的类和相应的适配器来实现这一目标。与问题相关的适配器有ImageView和两个TextView

其中一个位于图像顶部,另一个位于图像下方。

这就是它的外观

The layout of first instance of the fragment

片段的第一个实例的布局

然后我重复使用Fragment,只有ImageView存在。

不知何故,第一个实例中TextView的一部分正在爬进这个实例。就像在这张图片中一样

The blue portion is the textview background color

蓝色部分是textview背景颜色

现在代码

以下是XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#e2f1f8"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp">

        <FrameLayout

            android:id="@+id/image_frame"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp">

            <ImageView
                android:id="@+id/Place_image_view"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:foreground="@drawable/gradient"
                android:scaleType="centerCrop"
                android:src="@drawable/edpl_min" />


            <TextView
                android:id="@+id/place_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:layout_margin="10dp"
                android:text="@string/town_name"
                android:textColor="#FFFFFF"
                android:textSize="36sp"
                android:textStyle="bold" />
        </FrameLayout>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/relativeLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="#42a5f5">

        <TextView
            android:id="@+id/description"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="10dp"
            android:text="@string/description"
            android:textColor="#000000"
            android:textSize="16sp" />


    </LinearLayout>

</LinearLayout>

以下是此布局的自定义类:

package com.example.sharathprakash.tourguide;

/**
 * Created by Sharath Prakash on 10/15/2017.
 */

public class Info {
    private String mplacename;
    private int mImageResource;
    private String mdescription;
    private static final int NO_TEXT_PROVIDED = -1;


    public Info(String placename, String description, int imageresource) {
        mplacename = placename;
        mdescription = description;
        mImageResource = imageresource;

    }

    public Info(int imageresource, String placename) {
        mImageResource = imageresource;
        mplacename = placename;

    }

    public String getplacename() {

        return mplacename;
    }

    public String getdescription() {
        return mdescription;
    }

    /* public boolean hasText(){
         return mImageResource != NO_TEXT_PROVIDED;
     }*/
    public int getImageResource() {
        return mImageResource;
    }
}

以下是适配器:

package com.example.sharathprakash.tourguide;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by Sharath Prakash on 10/15/2017.
 */

public class InfoAdapter extends ArrayAdapter<Info> {
    public InfoAdapter(Activity Context, ArrayList<Info> inf) {
        super(Context, 0, inf);
    }


    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View listItemView = convertView;

        if (listItemView == null) {

            listItemView = LayoutInflater.from(getContext()).inflate(

                    R.layout.info_fragment_layout, parent, false);

        }
        Info currentnumber = getItem(position);
        TextView placetextview = (TextView) listItemView.findViewById(R.id.place_text_view);
        TextView descriptiontextview = (TextView) listItemView.findViewById(R.id.description);
        ImageView Placeimageview = (ImageView) 
        listItemView.findViewById(R.id.Place_image_view);
        placetextview.setText(currentnumber.getplacename());
        descriptiontextview.setText(currentnumber.getdescription());
        Placeimageview.setImageResource(currentnumber.getImageResource());
        return listItemView;
    }

}

我的问题是如何在第二张图片中隐藏此TextView

此外,向ImageView添加投影的任何方式都将非常有用。

1 个答案:

答案 0 :(得分:0)

您可以隐藏TextView:

descriptiontextview.setVisibility(View.GONE);

当你想隐藏它时。

再次展示:

descriptiontextview.setVisibility(View.VISIBLE);

此外,您可以在TextView .xml:

中默认设置此属性
android:visibility="gone"