提问人:Simon Van den Bossche 提问时间:10/6/2023 更新时间:10/6/2023 访问量:19
图像无法呈现
Images won't render
问:
我正在创建一个应用程序来计时魔方解决。
我想在我的活动中动态添加带有图标的按钮。 我的活动的布局文件,按钮将添加到线性布局中。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GraphSelectorActivity">
<LinearLayout
android:id="@+id/cube_sequence_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_graphselector_home"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:background="@drawable/transparent_button_with_outline"
android:text="@string/lbl_back"
app:backgroundTint="@null"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
活动的代码 cubeSequences 是以空格分隔的多维数据集的列表。例"3x3 4x4"
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import be.svdb.cubetimer.templates.CubeIcon;
public class GraphSelectorActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_graph_selector);
String[] cubeSequences = HomeActivity.db.getSolvedCubeSequences();
LinearLayout cubeSequenceContainer = findViewById(R.id.cube_sequence_container);
for (String cubeSequence : cubeSequences) {
cubeSequenceContainer.addView(new CubeSequenceButton(this, cubeSequence));
}
}
}
图标位于 drawable 文件夹中。
该活动创建 CubeSequenceButtons。这是它的布局文件(位于布局文件夹中)。
<?xml version="1.0" encoding="utf-8"?>
<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="horizontal"
android:clickable="true"
android:padding="5dp"
android:background="@drawable/transparent_button_with_outline"
tools:context=".CubeSequenceButton" />
及其代码:
import android.content.Context;
import android.widget.LinearLayout;
import be.svdb.cubetimer.templates.CubeIcon;
public class CubeSequenceButton extends LinearLayout {
private String cubeSequence;
public CubeSequenceButton(Context context, String cubeSequence) {
super(context);
this.cubeSequence = cubeSequence;
inflate(getContext(), R.layout.cube_sequence_button, this);
for (String cube : cubeSequence.split(" ")) {
addView(new CubeIcon(context, getResources().getIdentifier(
"icon_" + cube.toLowerCase(), "drawable", context.getPackageName())));
}
}
}
最后是 CubeIcon 布局文件和代码。
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context=".templates.CubeIcon" />
import android.content.Context;
import androidx.appcompat.widget.AppCompatImageView;
public class CubeIcon extends AppCompatImageView {
public CubeIcon(Context context, int iconID) {
super(context);
setImageResource(iconID);
}
}
答: 暂无答案
上一个:重用具有少量变化的视图组
评论