如何为标记制作自定义视图或如何制作自定义布局。像这样...
请看截图:

android google-maps itemizedoverlay android-layout android-view
我有一个应用程序,我将一些资源应用于按钮以修改它们的背景。
一切正常,但是当我的应用程序在 onPause 后进入 onResume 时,我无法再设置背景。
我有一组 18 个按钮,当我进入 onResume 时,我调用:
for (int i = 0; i < max; i++) {
Button b = l.get(i);
b.setBackgroundResource(R.color.green);
}
Run Code Online (Sandbox Code Playgroud)
在 li 中有从findViewById().
这仅适用于 for 的最后一个元素,但不适用于其他元素。
任何的想法?
** 编辑 **
这是我用于填充数组的代码
btn_1 = (Button)findViewById(R.id.btn_1);
btn_1.setOnClickListener(this);
l.add(btn_1);
Run Code Online (Sandbox Code Playgroud)
这对我所有的按钮都是重复的。
** 第二次编辑 **
public void onResume() {
btn_1 = (Button)findViewById(R.id.btn_1);
btn_1.setOnClickListener(this);
l = new ArrayList<Button>();
l.add(btn_1);
...
for (int i = 0; i < max; i++) {
Button b = l.get(i);
b.setBackgroundResource(R.color.green);
}
} …Run Code Online (Sandbox Code Playgroud) 我有两个Buttons主要布局.如果Button单击添加,则必须EditText动态添加(使用Inflater).这部分正在运作.如果Button单击" 删除" ,则必须先删除那些EditText带有最后一个的内容.但我不知道如何删除视图.
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.add_edit, null);
ll.addView(view);
}
});
remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ll.removeViewAt(0);
}
});
Run Code Online (Sandbox Code Playgroud) android android-inflate viewgroup layout-inflater android-view
我需要创建一个自定义布局,其中包含平板电脑上的两行,将显示特色项目和常规项目(无需滚动),并在手机上创建仅显示特色项目的列表视图。是否可以创建这样的布局,有人可以与我共享一些库来帮助我创建这种布局吗?
这是它在平板电脑上的外观:

这是它在手机上的外观:

android android-custom-view android-layout android-fragments android-view
我在查看我的应用时遇到此错误."布局编辑器中的图形预览可能不准确:
不支持Path.isConvex.(忽略此会话)"查看错误图片:

以下是activity_main.xml中的小部件
<ImageButton
android:id="@+id/ImageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/RoomEditText"
android:layout_centerHorizontal="true"
android:layout_marginTop="48dp"
android:background="@drawable/button_go"
android:minHeight="40dp"
android:minWidth="256dp" />
<EditText
android:id="@+id/RoomEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ImageButton1"
android:layout_below="@+id/imageView1"
android:layout_marginTop="80dp"
android:background="@drawable/editbox_round"
android:ems="10"
android:gravity="center_vertical|center_horizontal"
android:inputType="text"
android:maxLength="15"
android:minHeight="32dp"
android:minWidth="256dp" />
Run Code Online (Sandbox Code Playgroud)
以下是drawables:
button_go.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
android:angle="90"
android:endColor="#cc1a22"
android:startColor="#550200" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" >
</corners>
</shape>
Run Code Online (Sandbox Code Playgroud)
editbox_round.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffffff" />
<stroke
android:width="1dp"
android:color="#000000"
/>
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
/>
</shape>
Run Code Online (Sandbox Code Playgroud)
我不确定为什么他们出现隐形.如果有人愿意告诉我这里到底发生了什么?
我创建了一个自定义视图并覆盖了该onDraw方法.
但是,Android Studio说我canvas.drawOval和canvas.drawArc调用要求我将最小API设置为21.
从API 1开始,Canvas一直存在吗?
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.Button;
public class PieButton extends Button {
float progress = 0f;
public PieButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(0xFF00C853);
canvas.drawOval(0, 0, getWidth(), getHeight(), paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(0xFF000000);
canvas.drawArc(0, 0, getWidth(), getHeight(), 0f, progress*(-360), true, paint);
}
public void setProgress (float inputProgress) {
progress = inputProgress;
}
} …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在 Android 中的三次贝塞尔曲线下填充区域的方法。具体来说,我试图在自定义视图中绘制如下图所示的图形。我的想法是画一个圆和两条镜像的三次贝塞尔曲线并填充它们下方的区域。是否有内置的 Android 方式来存档此文件,还是我必须找到其他解决方案?如果是这样,您能帮我找到替代解决方案吗?
我想画的形状:

我想得到X和Y的观点(ImageButton).
当我尝试使用下面的代码在Click事件上找到X和Y时,我得到View的正确X和Y坐标.
ImageButton imagebutton = findviewbyId(R.id.imagebutton);
imagebutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int[] posXY = new int[2];
v.getLocationOnScreen(posXY);
x = posXY[0];
y = posXY[1];
Log.d("X and Y Point", x + " " + y);
}
});
Run Code Online (Sandbox Code Playgroud)
但是在点击视图之前我想要X和Y坐标,所以我尝试用下面的代码得到X和Y.
ImageButton imagebutton = findviewbyId(R.id.imagebutton);
int[] posXY = new int[2];
imageButton.getLocationOnScreen(posXY);
x = posXY[0];
y = posXY[1];
Log.d("X and Y Point", x + " " + y);
Run Code Online (Sandbox Code Playgroud)
但每当我尝试使用ClickListener获取X和Y时,我得到X和Y为0和0.因此,如果没有ClickListener,我不会得到Proper X和Y. 任何人都可以帮助解决什么是实际问题,如何在没有ClickListener的情况下获得Proper X和Y?
我有一个基本上所有在一个布局,其中包含我的应用程序的主要所需的一切.所有可变项目(图像,视频缩略图等等)GONE首先设置为VISIBLE并在需要时设置为.
问题有时可能是由于RecyclerView回收行为,应该GONE是VISIBLE错误的地方.
示例:
项目编号1包含文本
第2项包含图像
第3项包含图像
我继续向下滚动到项目no x,然后向上滚动,这是我得到的:
项目编号1包含项目编号x的图像,有时编号项目编号3
第2项包含图像
第3项包含图像
我正在使用自定义的ViewHolder extends RecyclerView.ViewHolder.的目的CustomViewHolder是为布局声明和初始化.
ProgressBar progressBar;
View viewDimmer;
RelativeLayout postListWrapper;
...
public ObjectViewHolder(View v) {
super(v);
progressBar = (ProgressBar)v.findViewById(R.id.post_inscroll_progressBar);
viewDimmer = (View)v.findViewById(R.id.post_inscroll_viewDimmer);
postListWrapper = (RelativeLayout)v.findViewById(R.id.post_inscroll_postListWrapper);
}
Run Code Online (Sandbox Code Playgroud)
我如何加载图像的示例:
Picasso.with(context)
.load(youtubeThumbnailUrl)
.fit()
.centerCrop()
.into(
((ObjectViewHolder) holder).userPostYoutubeImage
);
Run Code Online (Sandbox Code Playgroud)
GONE如果没有从服务器获取url,我已将每个可见性设置为
((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.GONE);
((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
但不知何故,图像仍然在之前的项目上重复使用(是的,不仅仅是第1项).有时图像也是错误的ImageView.图像D应该在ImageViewD中,但它在ImageViewA中.
设置RecyclerView和运行良好的指南?
如果我遗漏任何内容,或者需要提供更多代码,请告知我:D
Android 的onCreate方法似乎可以完成您通常在构造函数中所做的所有事情。
我有一些代码以编程方式向布局添加了一些视图,并且拥有一个onCreate方法似乎有点毫无意义 - 我只是为了一致性而这样做。
for (Contact contact : manager.getContacts()) {
GuiContact guiContact = new GuiContact(contact, this);
guiContact.onCreate();
// add them to the UI
guiContact.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
));
contactListLayout.addView(guiContact);
}
Run Code Online (Sandbox Code Playgroud)
为什么这个功能在onCreate而不是在构造函数中?
(final如果功能在构造函数中,则会有与成员相关的优势。)
android ×10
android-view ×10
java ×3
bezier ×1
fill ×1
google-maps ×1
viewgroup ×1
visibility ×1