简体   繁体   English

如何设置滚动视图内并包含两个 TextView 的线性布局的可见性消失?

[英]How to set visibility GONE of a Linear Layout which is inside a scroll view and contains two TextViews inside?

The main layout is a Linear layout inside that a scroll view is there which contain sublayouts.主布局是一个线性布局,里面有一个包含子布局的滚动视图。 Here is my layout [omitted everything except the specific layout (marked with red) as it will be very long]:这是我的布局[省略了除特定布局(用红色标记)之外的所有内容,因为它会很长]:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginStart="10dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="10dp"
            android:layout_marginBottom="8dp"
            android:foreground="?android:attr/selectableItemBackground"
            app:cardCornerRadius="8dp"
            app:cardElevation="10dp">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:padding="8dp">


                <LinearLayout
                    android:id="@+id/layoutIncomeTax"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="start"
                        android:text="Income Tax:"
                        android:textColor="@color/black"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/tvIncomeTax"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="end"
                        android:text="0"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:textStyle="bold" />

                </LinearLayout>

            </LinearLayout>

        </androidx.cardview.widget.CardView>

    </LinearLayout>

</ScrollView>

Here is my code (removed unnecessary codes):这是我的代码(删除了不必要的代码):

public class ViewSalary extends AppCompatActivity {公共 class ViewSalary 扩展 AppCompatActivity {

private Spinner selectShift, selectYear, selectMonth;
private EditText edtEmployeeCode;
private Button viewSalaryBtn;
private String shift, year, month;


DatabaseReference rootDatabaseRef;

private LinearLayout layoutIncomeTax;

private TextView tvIncomeTax;

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


    viewSalaryBtn = findViewById(R.id.viewSalaryBtn);

    layoutIncomeTax = findViewById(R.id.layoutIncomeTax);

    tvIncomeTax = findViewById(R.id.tvIncomeTax);

    rootDatabaseRef = FirebaseDatabase.getInstance().getReference().child("Salary");

    viewSalaryBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            viewSalary();

            String checkIncomeTax = tvIncomeTax.getText().toString();
            if (checkIncomeTax.equals("0.0")) {
                layoutIncomeTax.setVisibility(layoutIncomeTax.GONE);
            }

        }
    });


}

private void viewSalary() {

    final String empCode = edtEmployeeCode.getText().toString();

    DatabaseReference empRef = rootDatabaseRef.child(shift).child(year).child(month).child(empCode);

    empRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {

                String incomeTax = dataSnapshot.child("IncomeTax").getValue(String.class);

                tvIncomeTax.setText(incomeTax);

            } else {
                Toast.makeText(ViewSalary.this, "Data does not exist!", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Toast.makeText(ViewSalary.this, error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

}

} }

I want to hide all linear layouts on button click after getting the data loaded and if TextView value is "0.0" (like the one marked with red in screenshot)我想在加载数据后隐藏按钮单击时的所有线性布局,如果 TextView 值为“0.0”(如屏幕截图中标有红色的那个)

Screenshot截屏

Try this.尝试这个。

//use trim method to remove spaces in string 
    String checkIncomeTax = tvIncomeTax.getText().toString().trim();
        //hope you are not getting exactly 0.0.use log.i to see value then call if
                   log.i("checkIncomeTax",checkIncomeTax);
                    if (checkIncomeTax.equals("0.0")) {
                        layoutIncomeTax.setVisibility(layoutIncomeTax.GONE);
                    }
                        }

Perform the check inside the listener.在侦听器内部执行检查。

private Spinner selectShift, selectYear, selectMonth;
private EditText edtEmployeeCode;
private Button viewSalaryBtn;
private String shift, year, month;


DatabaseReference rootDatabaseRef;

private LinearLayout layoutIncomeTax;

private TextView tvIncomeTax;

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


    viewSalaryBtn = findViewById(R.id.viewSalaryBtn);

    layoutIncomeTax = findViewById(R.id.layoutIncomeTax);

    tvIncomeTax = findViewById(R.id.tvIncomeTax);

    rootDatabaseRef = FirebaseDatabase.getInstance().getReference().child("Salary");

    viewSalaryBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            viewSalary();
            // Do not check here
        }
    });


}

private void viewSalary() {

    final String empCode = edtEmployeeCode.getText().toString();

    DatabaseReference empRef = rootDatabaseRef.child(shift).child(year).child(month).child(empCode);

    empRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {

                String incomeTax = dataSnapshot.child("IncomeTax").getValue(String.class);

                tvIncomeTax.setText(incomeTax);
                
                // Check here
                if (incomeTax.equals("0.0")) {
                    layoutIncomeTax.setVisibility(layoutIncomeTax.GONE);
                }
                
            } else {
                Toast.makeText(ViewSalary.this, "Data does not exist!", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Toast.makeText(ViewSalary.this, error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在.XML文件中的线性布局内添加多个textview? - How to add multiple textviews inside linear layout in .XML file? Android:滚动视图内的线性布局未在其中显示更多项目 - Android: Linear layout inside scroll view is not showing more items inside it Android Scroll View最后一个视图未显示在线性布局内 - Android Scroll View last view not showing inside linear layout 无法在滚动视图中查看任何内容(文本视图) - Cant view anything(textviews) inside scroll view 如何在LinearLayout中显示“ visibility =” gone””的TextView - How to show a TextView inside a LinearLayout that is “visibility=”gone“” 当在可视化视图上方设置另一个视图时,如果在相对布局上设置可视性时,行为是否一致? - is there a consistent behavior when we set visibility gone on relative layout when another view is set above the gone view? Android:如何在线性布局中设置网格布局? - Android: How to set up Grid Layout inside Linear layout? 如何在包含的布局中设置android ImageView可见性? - how to set android ImageView visibility inside an included layout? 如何在线性布局中设置随机TextView的位置? - How to set random TextView's position inside linear layout? 将自定义样式设置为android中的自定义视图内的textviews - Set custom style to textviews inside a custom view in android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM