Я новичок в публикации на переполнении стека, поэтому я сделаю все возможное, чтобы описать здесь.Как нарисовать линию над GridView программно
Прямо сейчас я играю с андроид-студией. Я настроил gridview (я построил собственный пользовательский адаптер изображения), который содержит квадратные изображения, которые образуют сетку размером 5 на 6 с некоторым дополнением между каждым пространством сетки. То, что я хочу сделать, - это сделать линию (используя холст и краску) поверх этого gridview программно.
Я смотрел довольно много постов на переполнение стека, чтобы попытаться решить мою проблему, например, как этот: Draw a line on top of existing layout programmatically
При следовании инструкциям по ссылке выше ^^^, я был в состоянии создайте программу, которая рисует линию над ImageView.
Но когда я использую аналогичный код в своей программе, который пытается нарисовать линию над gridView, она просто рисует линию и ничего больше.
Вот фрагменты кода того, что я пытаюсь сделать. Это XML-файл:
<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="match_parent"
android:orientation="vertical">
<!-- Game layout *er -->
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridviewGame"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:numColumns="5"
android:stretchMode="columnWidth"
android:gravity="center"
/>
<com.example.ella.lazorsgame.DrawView
android:id="@+id/paintView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
Это код настраиваемого представления:
public class DrawView extends View {
Paint paint = new Paint();
private int strokeWidth = 8;
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setColor(Color.RED);
paint.setStrokeWidth(strokeWidth);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 300, 300, paint);
}
}
И это, где я рисую сетку изображений в моей основной деятельности (этот код работает сам по себе. .. сетка просто не появляется, когда я пытаюсь провести линию сверху):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_setup);
GridView gridview = (GridView) findViewById(R.id.gridviewGame);
blockGridAdapter = new ImageAdapter(this, R.drawable.selectedblock, 30);
// set up grid space object array *er
for (int i = 0; i < BlockSpaces.length; i++) {
BlockSpaces[i] = new BlockSpace(gridview, i);
}
// set up grid visual display on phone screen *er
gridview.setAdapter(blockGridAdapter);
// ------------- INITIAL GAME SETUP (block placements) -------------- *er
blockSetup(levelSelected);
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
updateSelection(position);
}
});
}
Благодарим за помощь! Дайте мне знать, нужна ли дополнительная информация.