[英]Encapsulate TextView Hide/Show Method
這是Android onCreate()
代碼的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)
不對每個新的TextViews
對調用setOnClickListener()
方法嗎?
提前非常感謝!
您將擁有一個視圖(如按鈕)來隱藏或顯示另一個視圖,對嗎?
如果是這樣,在布局上添加android:onclick="myFunction"
並在您的類上創建一個方法
public void myFunction(View v){
// do your logic
}
您可以使用v.getId() == R.id.youViewId
來檢查哪個視圖調用了該函數,這樣就可以構建一個開關或邏輯,並更改正確的視圖。
您可以在同一類中定義這樣的方法:
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);
...
我認為僅為該方法創建類不是有用的,但是顯然可以。
將此視圖包括在活動的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;
}
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.