android自定义view和自定义layout

我自定义了一个view,实现一个图片的移动,然后我想在view添加一个按钮,网上说是要建一个layout,然后再add。求教具体方法啊,能不能不用layout直接用view添加按钮。

5个回答

类似如下
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

LinearLayout itemLayout = new LinearLayout(context);
你的View.addView(itemLayout,p);
p = new LinearLayout.LayoutParams(100, LayoutParams.WRAP_CONTENT);

itemLayout.addView(你的button,p);

guangtouhaky
guangtouhaky 谢谢,我去试试
5 年多之前 回复

View没有addView这个方法啊,而且我是想在自定义的View中的构造函数中添加,addView方法完全无法调用啊,难道说有什么特殊包可以用么?

不能在layout 里面放 view 和一个button吗?

guangtouhaky
guangtouhaky 我这个view里面要播放一个自定义的动作,用layout布局怎么获得view然后再操作呢?
5 年多之前 回复

去查下自定义viewgroup的教程

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android自定义view怎样指定自定义view的布局

我有现成的布局xml文件,现在想定义一个组合的自定义view,怎样把这个view的布局指定为一个xml文件

Android自定义view失败

安卓编程时想在xml布局中自定义一个view,但当把自定义的view写在xml里面时,就会报错说The following classes could not be instantiated:- com.example.wifidetection.MyPaint.MyView 。 其中MyView就是我自定义的view,前面是它的路径,里面wifideection是包名,MyPaint是MyView所在的类,代码如下: <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:custom="http://schemas.android.com/apk/res/com.example.wifidetection" android:id="@+id/mScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" > <LinearLayout android:orientation = "vertical" android:id="@+id/main_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/start" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="开始绘图" /> <com.example.wifidetection.MyPaint.MyView android:layout_width="200dp" android:layout_height="100dp" /> </LinearLayout> </ScrollView> ``` ``` MyPaint中是这样的 public class MyPaint extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ····· setContentView(R.layout.paint_layout);//显示MyView布局 } class MyView extends View { public MyView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MyView(Context context){ super(context); ``` ``` 一直搞不懂,网上也没找到什么好的解释,求论坛里大神解答

Android 自定义View 参数

这是我自定义View 的源码: public class MyView extends View { private float px; private float py; private int flag ; private Bitmap map; public MyView(Context context,float p_x,float p_y,int flag) { super(context); this.px=p_x; this.py=p_y; this.flag=flag; System.out.println(px); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); System.out.println("2"); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(flag==1){ map=BitmapFactory.decodeResource(getResources(), R.drawable.star_circle_mo); } else{ map=BitmapFactory.decodeResource(getResources(), R.drawable.star_circle_mo1); } System.out.println("p_x"+px); System.out.println("p_y"+py); canvas.drawBitmap(map, 45.0f, 180.0f, null); } } 在这里面调用它: public class PicBuyDemo extends Activity { private ImageView iv; private MyView myView; private MyView ball; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); iv=(ImageView)findViewById(R.id.iv); ball=(MyView)findViewById(R.id.myView_01); iv.setBackgroundResource(R.drawable.j1); myView =new MyView(this,80.0f,70.0f,1); iv.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { ball.setVisibility(View.VISIBLE); return false; } }); } } 布局文件: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/ll" > <ImageView android:id="@+id/iv" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <com.cyc.MyView android:id="@+id/myView_01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" > </com.cyc.MyView> </FrameLayout> 为什么在自定义View的ondraw()方法里px,py总是为0.0,flag=0

Android 自定义View继承ViewGroup,onLayout怎么重新调用?

Android 自定义View继承ViewGroup,通过参数计算子view的位置,改变参数后,怎么让onLayout方法重新被调用?

android自定义view插入xml

自定义View代码如下。我希望把这个view插入到一个layout的xml的文件中。一直出错,错误类型是error inflating class。应该是这个View出的问题 package com.example.browserstation; import java.util.Timer; import java.util.TimerTask; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class touchmove extends View{ private int start_x; private final int width = MainActivity.screenWidth; private int height ; private int backwidth; private int ori_x = 0; //点击屏幕原始坐标,当前坐标和位移数据 private int ori_y = 0; private int cur_x = 0; private int cur_y = 0; private int del_x = 0; private int del_y = 0; private Bitmap bmp_back; private Bitmap bmp_bg1; private Bitmap bmp_draw0; private Bitmap bmp_draw1; private Boolean flag_move = false; private Boolean flag_temp = false; private int index = 0; private Context c; private TimerTask ttsk = new TimerTask(){ @Override public void run() { // TODO Auto-generated method stub if(flag_move)h.sendEmptyMessage(0x888); } }; final Handler h = new Handler(){ //处理信息,背景移动 public void handleMessage(Message msg){ if(msg.what == 0x888){ if(start_x < (backwidth - width-2)){ flag_temp = false; start_x += 3; }else if(start_x < backwidth - 3){ start_x += 3; flag_temp = true; }else{ if(index>0){ backwidth = bmp_back.getWidth(); index = 0; }else { backwidth = bmp_bg1.getWidth(); index += 1; } start_x = 0; flag_temp = false; flag_move = false; } } invalidate(); } }; private Timer timer; public touchmove(Context context) { super(context); c = context; bmp_back = BitmapFactory.decodeResource(getResources(), R.drawable.mainback); bmp_back = new zoompicture(bmp_back,bmp_back.getWidth(),MainActivity.screenHeight).getOutbtm(); bmp_bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1); bmp_bg1 = new zoompicture(bmp_bg1,bmp_bg1.getWidth(),MainActivity.screenHeight).getOutbtm(); start_x = 0; backwidth = bmp_back.getWidth(); height = MainActivity.screenHeight; bmp_draw0 = bmp_back; bmp_draw1 = bmp_back; timer = new Timer(); timer.schedule(new TimerTask(){ @Override public void run() { // TODO Auto-generated method stub if(flag_move){ h.sendEmptyMessage(0x888); } } }, 0, 100); } public touchmove(Context context, AttributeSet attrs) { super(context,attrs); // TODO Auto-generated constructor stub c = context; bmp_back = BitmapFactory.decodeResource(getResources(), R.drawable.mainback); bmp_back = new zoompicture(bmp_back,bmp_back.getWidth(),MainActivity.screenHeight).getOutbtm(); bmp_bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1); bmp_bg1 = new zoompicture(bmp_bg1,bmp_bg1.getWidth(),MainActivity.screenHeight).getOutbtm(); start_x = 0; backwidth = bmp_back.getWidth(); height = MainActivity.screenHeight; bmp_draw0 = bmp_back; bmp_draw1 = bmp_back; timer.schedule(new TimerTask(){ @Override public void run() { // TODO Auto-generated method stub if(flag_move){ h.sendEmptyMessage(0x888); } } }, 0, 100); } public touchmove(Context context, AttributeSet attrs, int delStyle) { super(context,attrs,delStyle); // TODO Auto-generated constructor stub c = context; bmp_back = BitmapFactory.decodeResource(getResources(), R.drawable.mainback); bmp_back = new zoompicture(bmp_back,bmp_back.getWidth(),MainActivity.screenHeight).getOutbtm(); bmp_bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1); bmp_bg1 = new zoompicture(bmp_bg1,bmp_bg1.getWidth(),MainActivity.screenHeight).getOutbtm(); start_x = 0; backwidth = bmp_back.getWidth(); height = MainActivity.screenHeight; bmp_draw0 = bmp_back; bmp_draw1 = bmp_back; timer.schedule(new TimerTask(){ @Override public void run() { // TODO Auto-generated method stub if(flag_move){ h.sendEmptyMessage(0x888); } } }, 0, 100); } /* (non-Javadoc) * @see android.view.View#onTouchEvent(android.view.MotionEvent) */ @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch(action){ case MotionEvent.ACTION_DOWN:ori_x = (int)event.getX();ori_y = (int)event.getY(); Log.v("ori_x :",""+ori_x); return true; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP:cur_x = (int)event.getX();cur_y = (int)event.getY(); del_x = cur_x - ori_x;del_y = cur_y - ori_y; if(del_x < -50){ flag_move = true; };Log.v("delx: ",""+del_x); break; } // TODO Auto-generated method stub return super.onTouchEvent(event); } /* (non-Javadoc) * @see android.view.View#onDraw(android.graphics.Canvas) */ @Override protected void onDraw(Canvas canvas) { if(!flag_temp){ switch(index){ case 0:bmp_draw0 = Bitmap.createBitmap(bmp_back,start_x,0,width,height); bmp_draw1 = bmp_draw0; canvas.drawBitmap(bmp_draw0,0,0,new Paint()); break; case 1:bmp_draw0 = Bitmap.createBitmap(bmp_bg1,start_x,0,width,height); bmp_draw1 = bmp_draw0; canvas.drawBitmap(bmp_draw0,0,0,new Paint()); break; } }else{ switch(index){ case 0:bmp_draw0 = Bitmap.createBitmap(bmp_back,start_x,0,bmp_back.getWidth()-start_x,height); bmp_draw1 = Bitmap.createBitmap(bmp_bg1,0,0,start_x+width-backwidth,height); canvas.drawBitmap(bmp_draw0,0,0,new Paint()); canvas.drawBitmap(bmp_draw1, width-bmp_draw1.getWidth(),0, new Paint()); break; case 1:bmp_draw0 = Bitmap.createBitmap(bmp_bg1,start_x,0,bmp_bg1.getWidth()-start_x,height); bmp_draw1 = Bitmap.createBitmap(bmp_back,0,0,start_x+width-backwidth,height); canvas.drawBitmap(bmp_draw0,0,0,new Paint()); canvas.drawBitmap(bmp_draw1, width-bmp_draw1.getWidth(),0, new Paint()); break; } } Log.v("v","draw1:"+bmp_draw0.getWidth()+"draw2:"+bmp_draw1.getWidth()+" strat_x"+start_x); // TODO Auto-generated method stub super.onDraw(canvas); } }

android自定义控件按钮无法点击

TitleLayout.java ``` package com.example.uicustomviews; import android.app.Activity; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button titleBack = (Button) findViewById(R.id.title_back); Button titleEdit = (Button) findViewById(R.id.title_edit); titleBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity) getContext()).finish(); } }); titleEdit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), "You clicked Edit button", Toast.LENGTH_SHORT).show(); } }); } } ``` MainActivity.java ``` package com.example.uicustomviews; import android.app.Activity; import android.os.Bundle; import android.view.Window; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); } } ``` title.xml ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/title_bg" > <Button android:id="@+id/title_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="5dip" android:background="@drawable/back_bg" android:text="Back" android:textColor="#fff" /> <TextView android:id="@+id/title_text" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:gravity="center" android:text="This is Title" android:textColor="#fff" android:textSize="22sp" /> <Button android:id="@+id/title_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="5dip" android:background="@drawable/edit_bg" android:text="Edit" android:textColor="#fff" /> </LinearLayout> ``` activity_main.xml ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <include layout="@layout/title" /> <com.example.uicustomviews.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content" > </com.example.uicustomviews.TitleLayout> </LinearLayout> ``` 求助 折腾了好久 导入别人的工程 上面这四份代码完全一样 别人的点击有反应 自己的没反应

Android 自定义View点击事件

# 给自定义小图标(箭头所指)添加OnclickListener(); # 结果 # 只要点击屏幕就会响应了 刚接触Android不久,不知道哪里的问题,求大神指点。 ![图片说明](https://img-ask.csdn.net/upload/201511/05/1446715229_242966.png) ``` public class Map extends Fragment implements OnClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View root = inflater.inflate(R.layout.map, container, false); FrameLayout frameLayout = (FrameLayout) root .findViewById(R.id.maplayout); /** * 新建一个图标 * * @author prohan * @param Context * context int x ,int y 添加的点的左上角位置 int id 设置节点ID */ final Myview myview = new Myview(this.getActivity(), 830, 880); myview.setOnClickListener(this); myview.setId(10); frameLayout.addView(myview); return root; } public void onAttach(Activity activity) { super.onAttach(activity); } class Myview extends View { public int bitmapx; public int bitmapy; public Myview(Context context, int x, int y) { super(context); this.bitmapx = x; this.bitmapy = y; } @Override protected void onDraw(Canvas canvas) { Paint point = new Paint(); point.setAlpha(150); Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.point); canvas.drawBitmap(bitmap, null, new Rect(bitmapx, bitmapy, bitmapx + 60, bitmapy + 100), point); // canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint); // canvas.drawBitmap(bitmap, bitmapx, bitmapy, point); } } // Onclick中的方法 private void alertmessage() { AlertDialog alert = new AlertDialog.Builder(this.getActivity()) .create(); alert.setIcon(R.drawable.ic_launcher);// 设置对话框的图标 alert.setTitle("当前站点信息:"); alert.setMessage("XXXXXXXXXXXXXXXX"); alert.show(); } @Override public void onClick(View v) { switch (v.getId()) { case 10: Toast.makeText(getActivity(), "#" + v.getId() + "#" + "8号楼监测站", Toast.LENGTH_SHORT).show(); alertmessage(); break; default: break; } } } ``` # 如果能告诉我如何能让myview跳动起来就最好啦

如何把参数传给自定义view

根据输入的长宽高生出图形,但是怎么把Edittext获取的数据传给自定义View呀

Android自定义组件是如何定义宽度和高度的?

<com.happyplayer.widget.HBaseSeekBar android:id="@+id/playerSeekBar" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="70dp" android:layout_marginRight="70dp" android:max="100" android:progress="0" /> 请问一下这个自定义组件应该如何改变它的大小啊,我把width和height写成固定值均无效,显示在机器上就是一个细细的进度条,我想把它变宽一点该如何设置呀?

android自定义viewgroup中的fragment无法显示

我在自定义的viewgroup中,添加了一个viewpager ``` <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never"> </android.support.v4.view.ViewPager> </FrameLayout> ``` 现在我给viewpager添加fragment,但是里面的fragment都不显示,我打印了fragment的生命周期,连oncreate都没走。 ``` viewPager.setAdapter(new FragmentPagerAdapter(((BaseActivity) getContext()).getSupportFragmentManager()) { @Override public Fragment getItem(int i) { return fragments.get(i); } @Override public int getCount() { return fragments.size(); } }); ```

android Dialog添加自定义view

对话框添加自定义的布局,只能显示一次,第二次就会崩溃。查了一下,也没有找到解决办法。 b=new Builder(this); v=getLayoutInflater().inflate(R.layout.item, null); b.setView(v); btShow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { b.create().show(); } });

AndroidStudio使用自定义view预览出现错误提示

 Rendering Problems The following classes could not be found: - com.xxxxxxx.NoScrollAnimationViewPager (Fix Build Path, Edit XML, Create Class) AndroidStudio的layout里面使用自定义view时报错,不影响使用类引用也没有问题,每次改变视图都会出现,挺烦人的,不知道怎么去掉

Android addview自定义控件不显示问题

为什么我在onCreat中addview一个自定义控件能够正常显示,但是在onWindowsFoucsChanged里面addview总是显示不出来

Android自定义view,空指针异常求解决

``` package com.drawview.drawview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.linearlayout); LinearLayout l = (LinearLayout)findViewById(R.layout.linearlayout); DrawView dv = new DrawView(this); dv.setMinimumHeight(300); dv.setMinimumWidth(300); l.addView(dv); } } package com.drawview.drawview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class DrawView extends View{ private float currentX = 30; private float currentY = 30; Paint p = new Paint(); public DrawView(Context context) { super(context); } public DrawView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { currentX = event.getX(); currentY = event.getY(); invalidate(); return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); p.setColor(Color.MAGENTA); canvas.drawCircle(currentX,currentY,15,p); } } ``` 【错误提示】 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.addView(android.view.View)' on a null object reference at com.drawview.drawview.MainActivity.onCreate(MainActivity.java:17) 我知道错误的意思,也知道发生在哪儿,就是不知道怎么解决。

Android 自定义ImageView出现的问题

package com.qnear.wechat; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; 这是自定义的类 来源:http://www.cnblogs.com/goagent/p/5159126.html public class ImageViewPlus extends ImageView { private Paint mPaintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); private Bitmap mRawBitmap; private BitmapShader mShader; private Matrix mMatrix = new Matrix(); public ImageViewPlus(Context context, AttributeSet attrs) { super(context,attrs); } @Override protected void onDraw(Canvas canvas){ Bitmap rawBitmap = getBitmap(getDrawable()); if(rawBitmap!=null){ int viewWidth = getWidth(); int viewHeight = getHeight(); int viewMinSize = Math.min(viewWidth, viewHeight); float dstWidth = viewMinSize; float dstHeight = viewMinSize; if(mShader==null||!rawBitmap.equals(mRawBitmap)){ mRawBitmap = rawBitmap; mShader = new BitmapShader(mRawBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); } if(mShader!=null){ mMatrix.setScale(dstWidth/rawBitmap.getWidth(),dstHeight/rawBitmap.getHeight()); mShader.setLocalMatrix(mMatrix); } mPaintBitmap.setShader(mShader); float radius =viewMinSize/2.0f; canvas.drawCircle(radius,radius,radius,mPaintBitmap); }else{ super.onDraw(canvas); } } private Bitmap getBitmap(Drawable drawable) { if(drawable instanceof BitmapDrawable){ return ((BitmapDrawable) drawable).getBitmap(); }else if(drawable instanceof ColorDrawable){ Rect rect = drawable.getBounds(); int width = rect.right - rect.left; int height = rect.bottom - rect.top; int color = ((ColorDrawable) drawable).getColor(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawARGB(Color.alpha(color),Color.red(color),Color.blue(color),Color.green(color)); return bitmap; }else{ return null; } } } 这是引用语句: <com.qnear.wechat.ImageViewPlus android:layout_width="150dp" android:layout_height="150dp" android:src="@drawable/mwinbag" android:scaleType="centerInside" android:layout_marginTop="146dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> 然后我就遇到了这个问题: ![图片说明](https://img-ask.csdn.net/upload/201612/22/1482385305_296726.png)![图片说明](https://img-ask.csdn.net/upload/201612/22/1482385317_826178.png) 一个显示正常,一个黑屏

Android MaterialDialogs中自定义View如何更新UI

``` private void showUserIdentifyDialogs(){ new MaterialDialog.Builder(MyProfileActivity.this) .title(getString(R.string.identify_name)) .canceledOnTouchOutside(false) .customView(R.layout.dialogs_identify, true) .show(); } ``` 这种我通过.customView()方式自定义Materialdialogs内容的,Dialogs中View的响应事件中如何更新UI,我试了Handle,似乎不行。

在一个自定义的对话框中如何使用一个 list view?

我想在对话框中使用listview,我已经在xml文件中设置了listview,但是我不熟悉怎么使用它(我想用string array填充listview中的值)。 main java: package custom.dialouge.list; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; public class CustomDialougeListTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Context mContext = this; final Context context = this; Button button; button = (Button) findViewById(R.id.button01); // add button listener button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // custom dialog final Dialog dialog = new Dialog(context); dialog.setContentView(R.layout.list); dialog.setTitle("List"); // set the custom dialog components - text, image and button TextView text = (TextView) dialog.findViewById(R.id.TextView01); text.setText("Test"); Button dialogButton = (Button) dialog.findViewById(R.id.Button01); // if button is clicked, close the custom dialog dialogButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.show(); } }); } } custom dialouge .xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:text="Back" /> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="TextView" /> <ListView android:id="@+id/listview1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/Button01" android:layout_alignParentLeft="true" android:layout_below="@+id/TextView01" > </ListView> </RelativeLayout> 在一个自定义的对话框中如何使用一个list?

[Android界面] 新手求助:自定义控件重复显示问题

定义了一个倒计时的控件,初始显示为“开始”,点击后从10开始倒计时,一直到0。可是在控件上会额外显示一个文本,如下图 ![图片说明](https://img-ask.csdn.net/upload/201611/28/1480338890_452955.png) 额外显示的文本也会在点击开始后倒计时,找了好久一直没发现问题所在。所以请教一下各位大神。 其中自定义控件代码如下: ``` public class CustomView_A7 extends TextView{ private Paint paint = new Paint(); private Rect rect = new Rect(); private int mBackgroundColor= ContextCompat.getColor(getContext(), R.color.colorPrimary); private int mTextColor = Color.WHITE; public CustomView_A7(Context context) { super(context); } public CustomView_A7(Context context, AttributeSet attrs) { super(context, attrs); } public CustomView_A7(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画圆 paint.setColor(mBackgroundColor); canvas.drawCircle(getWidth()/2, getWidth()/2, getWidth()/2, paint); //画数字 paint.setColor(mTextColor); paint.setTextSize(240); String text = (String)this.getText(); paint.getTextBounds(text, 0, text.length(), rect); int textWidth = rect.width(); int textHeight = rect.height(); canvas.drawText(text, getWidth()/2 - textWidth/2, getWidth()/2 + textHeight/2, paint); } } ``` Layout中只有一个自定义控件: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.administrator.androidstudyapp.CustomView_A7 android:layout_width="240dp" android:layout_height="240dp" android:layout_gravity="center" android:layout_margin="@dimen/activity_vertical_margin" android:id="@+id/customView_A7"/> </LinearLayout> ``` 难道是Activity中的问题吗,还麻烦各位帮帮忙: ``` public class Point_A7_Activity extends AppCompatActivity{ private CustomView_A7 mCustomViewA7; private int value = 10000; //10秒 Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 8888: int value = (int) msg.obj; mCustomViewA7.setText(String.valueOf(value/1000f)); if(value > 0){ Message message = handler.obtainMessage(); message.arg1 = 1; message.arg2 = 2; message.what = 8888; message.obj = value - 100; sendMessageDelayed(message, 100); } break; } } }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_point_a7); mCustomViewA7 = (CustomView_A7) findViewById(R.id.customView_A7); mCustomViewA7.setText("开始"); mCustomViewA7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Message message = handler.obtainMessage(); //不要使用Message message = new Message(); message.arg1 = 1; message.arg2 = 2; message.what = 8888; message.obj = value ; handler.sendMessageDelayed(message, 100); } }); } } ```

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大胆预测下未来5年的Web开发

在2019年的ReactiveConf 上,《Elm in Action》的作者Richard Feldman对未来5年Web开发的发展做了预测,很有意思,分享给大家。如果你有机会从头...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

立即提问
相关内容推荐