封装TextView隐藏/显示方法

时间:2016-06-09 17:20:56

标签: java android

以下是Android onCreate()代码的摘要。

View view1;
View view2;
boolean hidden = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.volunteer_screen);

    view1 = findViewById(R.id.sub1);
    view2 = findViewById(R.id.answer1);

    view1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (hidden)
            {
                view2.setVisibility(View.GONE);
                hidden = false;
            } else
            {
                view2.setVisibility(View.VISIBLE);
                hidden = true;
            }
        }
    });

我如何将其封装在某个类中,可能使用如下构造函数:

Class(View view1, View view2, boolean state)

不要将setOnClickListener()方法调用到每对新的TextViews

非常感谢提前!

3 个答案:

答案 0 :(得分:0)

您将有一个视图(如按钮)隐藏或显示另一个视图吗?

如果是这样,在布局上添加import HandySwift let line = " BB-8 likes Rey " line.strip // => "BB-8 likes Rey" 并在您的班级上创建方法

android:onclick="myFunction"

您可以使用public void myFunction(View v){ // do your logic } 检查哪个视图调用该函数,这样,您可以构建一个开关或逻辑并更改正确的视图。

答案 1 :(得分:0)

您可以在同一个类中定义这样的方法:

private void setClickListener(final EditText sub, final EditText answer) {
    sub.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            answer.setVisibility(hidden ? View.GONE : View.VISIBLE);
            hidden = !hidden;
        }
    });
}

然后你可以打电话

setClickListener(view1, view2);
setClickListener(view3, view4);
...

我认为只为该方法创建一个类很有用,但显然你可以。

答案 2 :(得分:0)

将此视图包含在您的活动的XML文件中,如下所示:

<your.package.CustomLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
/>
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;

/**
 * Created by ozgur on 09.06.2016.
 */
public class CustomLayout extends LinearLayout {

    private View view1;
    private View view2;
    private boolean hidden;

    public CustomLayout(Context context) {
        super(context);
        init(context);
    }

    public CustomLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public CustomLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context) {
        //inflate the view that contains your view1, view2
        View wrapper = inflate(context, R.layout.view_custom_layout, this);
        view1 = wrapper.findViewById(R.id.view1);
        view2 = wrapper.findViewById(R.id.view2);

        view1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                if (hidden) {
                    view2.setVisibility(View.GONE);
                    hidden = false;
                } else {
                    view2.setVisibility(View.VISIBLE);
                    hidden = true;
                }
            }
        });
    }
}