Newb问题。 所以,我正在制作可点击的文本部分,可以扩展和收缩以显示来自非常有用的教程的更多文本,但我仍然坚持最后一部分。文本部分有一个if / else语句,可以将内容从GONE切换为VISIBLE。但现在我正在尝试调整代码以包含更多其他语句,我无法弄清楚条件应该是什么。
public class AlabamaActivity extends AppCompatActivity {
TextView registration_info;
TextView info2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alabama);
registration_info = (TextView)findViewById(R.id.registration_info);
// hidden until its title is clicked
registration_info.setVisibility(View.GONE);
info2 = (TextView) findViewById(R.id.info2);
info2.setVisibility(View.GONE);
public void toggle_contents(View v) {
if (registration_info.isShown()){
Fx.slide_up(this, registration_info);
registration_info.setVisibility(View.GONE);
}
else if (//?????){
registration_info.setVisibility(View.VISIBLE);
Fx.slide_down(this, registration_info);
}
else if (info2.isShown()){
Fx.slide_up(this, info2);
info2.setVisibility(View.GONE);
}
else if (//?????){
info2.setVisibility(View.VISIBLE);
Fx.slide_down(this, info2);
}
...
这是我试图调整的原始if / else语句。
public void toggle_contents(View v) {
if (registration_info.isShown()){
Fx.slide_up(this, registration_info);
registration_info.setVisibility(View.GONE);
}
else {
registration_info.setVisibility(View.VISIBLE);
Fx.slide_down(this, registration_info);
}
我在过去几个小时内尝试过试错,我上网的结果对于像我这样的新手来说有点多了。
另外,我一直在想我是否可以改用这个开关/箱子?
谢谢!
编辑---尽量不要笑笑
Fx代码
public static void slide_down(Context ctx, View v) {
Animation a = AnimationUtils.loadAnimation(ctx, R.anim.slide_down);
if (a != null) {
a.reset();
if (v != null) {
v.clearAnimation();
v.startAnimation(a);
}
}
}
public static void slide_up(Context ctx, View v){
Animation a = AnimationUtils.loadAnimation(ctx, R.anim.slide_up);
if(a != null){
a.reset();
if(v != null){
v.clearAnimation();
v.startAnimation(a);
}
}
}
}
向下滑动
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="200"
android:fromXScale="0.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
向上滑动
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="200"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="0.0" />
</set>
的xml:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Alabama">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/registration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Registration"
android:textSize="20sp"
android:clickable="true"
android:onClick="toggle_contents"
android:paddingLeft="16dp"
android:paddingBottom="16dp"/>
<!--content to hide/show -->
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/registration_info"
android:text="info here"
android:paddingLeft="16dp"
android:paddingBottom="16dp"/>
<TextView
android:id="@+id/info2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Info2"
android:textSize="20sp"
android:clickable="true"
android:onClick="toggle_contents"
android:paddingLeft="16dp"
android:paddingBottom="16dp"/>
<!--content to hide/show -->
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/info2"
android:text="info here"
android:paddingLeft="16dp"
android:paddingBottom="16dp"/>
答案 0 :(得分:0)
这应该可以胜任,[现在]:
public void toggle_contents(View v) {
// first set
if (registration_info.isShown()){
Fx.slide_up(this, registration_info);
registration_info.setVisibility(View.GONE);
}
else {
registration_info.setVisibility(View.VISIBLE);
Fx.slide_down(this, registration_info);
}
// second set
if (info2.isShown()){
Fx.slide_up(this, info2);
info2.setVisibility(View.GONE);
}
else {
info2.setVisibility(View.VISIBLE);
Fx.slide_down(this, info2);
}
<强> [编辑] 强>
根据您更新的帖子,我认为这应该足够了:
public void toggle_contents(View v) {
if (v.isShown()){
Fx.slide_up(this, v);
v.setVisibility(View.GONE);
}
else {
v.setVisibility(View.VISIBLE);
Fx.slide_down(this, v;
}
<强> [EDIT2] 强>
因为,您将点击监听器附加到一个文本视图并展开/折叠另一个,切换案例似乎要走了:
public void toggle_contents(View v) {
View childTV;
switch(v.getId()) {
case R.id.registration:
childTV = findViewById(R.id.registration_info);
// Can add more cases here
default:
childTV = findViewById(R.id.info2_child);
}
if (childTV.isShown()){
Fx.slide_up(this, childTV);
childTV.setVisibility(View.GONE);
}
else {
childTV.setVisibility(View.VISIBLE);
Fx.slide_down(this, childTV);
}
}
注意:目前,您的两个视图在xml中的ID为info2
。我上面有一个虚拟id,你应该相应修复它。