gpt4 book ai didi

java - Android Studio 中相对布局问题中 Button 顶部的进度条

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:45 25 4
gpt4 key购买 nike

好吧,这是一个奇怪的问题,我希望有人能给我解释一下。

我有一个自定义按钮布局,它创建了一个按钮,按钮中间有一个圆形进度条。我的 XML 代码如下。然而,我无法解决的是 ProgressBar 似乎出现在按钮后面。如果我将按钮背景设置为透明以外的任何其他内容,则无法看到进度条。在按钮背景透明的情况下,我可以看到 ProgressBar 但它仍然出现在按钮文本后面。我的理解是 View 按添加顺序出现。我什至尝试将 View 设置在顶部(view.bringToFront();)并且我尝试删除 View 并重新创建它。

为什么按钮后面会出现进度条,如何解决?

非常感谢

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@android:color/holo_blue_bright"
android:padding="2dp">

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:text="Button"
android:gravity="center"
android:textColor="@android:color/white"
android:singleLine="true"
android:clickable="false">
</Button>

<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_centerInParent="true"
android:visibility="visible"
/>

</RelativeLayout>

使用上述布局的代码

 private void setupTableLayout(int NumberOfRows, int NumberOfButtons){
TableLayout.LayoutParams tableParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT);
TableRow.LayoutParams rowParams = new TableRow.LayoutParams(0, android.widget.TableRow.LayoutParams.MATCH_PARENT, 3f);
TableLayout tableLayout = (TableLayout) findViewById(R.id.thetablelayout);
tableLayout.removeAllViews();

for (int i = 0; i < NumberOfRows; i++) {
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(tableParams);

RelativeLayout btnOneLayout = (RelativeLayout)getLayoutInflater().inflate(R.layout.custom_button, null);
RelativeLayout btnTwoLayout = (RelativeLayout)getLayoutInflater().inflate(R.layout.custom_button, null);

ProgressBar btnOneProgressBar = (ProgressBar)btnOneLayout.findViewById(R.id.progressBar);
ProgressBar btnTwoProgressBar = (ProgressBar)btnTwoLayout.findViewById(R.id.progressBar);

btnOneLayout.setLayoutParams(rowParams);
btnTwoLayout.setLayoutParams(rowParams);

Button btnOne = (Button)btnOneLayout.findViewById(R.id.button);
btnOne.setText("Btn 1, Row " + i);
btnOne.setId(1001 + i);
Button btnTwo = (Button)btnTwoLayout.findViewById(R.id.button);
btnTwo.setText("Btn 2, Row " + i);
btnTwo.setId(2001 + i);

setButtonClickListener(btnOneLayout, btnOneProgressBar);
setButtonLongClickListener(btnOneLayout, btnOneProgressBar);

tableRow.addView(btnOneLayout); //Add layout, instead of just Button

View adivider = new View(this);
adivider.setLayoutParams(new TableRow.LayoutParams(20, TableRow.LayoutParams.MATCH_PARENT));
adivider.setBackgroundColor(Color.TRANSPARENT);

// This bit of code deals with odd/even numbers of buttons.
if (((i + 1) * 2) < NumberOfButtons + 1) {
tableRow.addView(adivider);
tableRow.addView(btnTwoLayout);
} else {
tableRow.addView(adivider);

btnTwoLayout.setBackgroundResource(android.R.color.transparent);
tableRow.addView(btnTwoLayout);
}


tableLayout.addView(tableRow);

}

}

最佳答案

你可能在 android >= 5.0 上运行它。在 5.0 中,他们为 View 添加了高程字段。 Elevation 定义 ViewGroup 中 View 的 z 顺序。

在这种情况下,按钮具有非零高度值,进度条具有零值高度。

将进度条的高度设置为例如10dp

<ProgressBar
...
android:elevation="10dp"/>

关于java - Android Studio 中相对布局问题中 Button 顶部的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com