android中xml设置控件的属性和java文件里设置控件的属性有何不同

android中xml设置控件设置的属性和java文件里设置控件的属性有何不同
是不是java文件里设置可以改变动态的改变控件位置,文字颜色,文字大小
而在xml文件设置之后就无法改变
那具体在java文件设置的属性是如何改变的呢

3个回答

java中可以重新设置去改变xml的设置。但是xml不能去改变java中的设置。

你可以这样理解,xml设置以后基本不会改变,如果会改变,就要在java里面设置

Theresa_zxx 的回答让我也明白了!谢谢

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
安卓开发在java文件中每个控件按比例设置大小
各位做开发的大神,有没有人遇到过,在安卓开发的过程中,由于安卓对控件的大小的dp设置的不是非常精确,所以不仅在xml中设置每个控件的长宽,还要在对应的java文件中,对每一个控件都按照当前设备的密度值来按照比例值计算控件显示的长宽大小?就是每个控件都要在java文件中自己手动按照设备密度值做计算,最后按照计算结果显示在设备上?
Android 在XML文件中控件监听,在Activity中实现不了,有异常IllegalStateException
1. activity_main.xml <Button android:id="@+id/btLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登陆" android:layout_alignParentRight="true" android:onClick="login" /> 2. Activity代码 public class MainActivity extends Activity { EditText etUserName = null; EditText etPassword = null; CheckBox cb = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etUserName = (EditText) findViewById(R.id.etUserName); etPassword = (EditText) findViewById(R.id.etPassword); cb = (CheckBox) findViewById(R.id.cb); } public void login(View view){ String userName = etUserName.getText().toString().trim(); String password = etPassword.getText().toString().trim(); if(TextUtils.isEmpty(userName)||TextUtils.isEmpty(password)){ Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show(); } else { //判断用户是否记住密码 if(cb.isChecked()){ //保存用户名密码 Log.i("tag", "需要记住密码"); } //登陆发送消息到服务器,服务器验证是否正确 if("zhangsan".equals(userName)&&"123".equals(password)){ Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "登陆失败,用户名或密码错误", Toast.LENGTH_SHORT).show(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } log中的不知道怎么复制上来----04-14 20:56:37.910: E/AndroidRuntime(1142): java.lang.IllegalStateException: Could not find a method login(View) in the activity class com.example.login.MainActivity for onClick handler on view class android.widget.Button with id 'btLogin'
layout中listview占据了整个界面,其余控件全部隐藏,xml文件怎么改都没用
layout中listview占据了整个界面,其余控件全部隐藏,xml文件怎么改都没用,只要listview有数据,就看不到添加的BUTTON或者EXITVIEW了。 布局文件: <?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/btshanchu" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="删除" /> <ListView android:id="@+id/Lziliao" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btshanchu"/> </RelativeLayout> java文件: package com.example.huclass; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListAdapter; import android.widget.ListView; public class GuanliActivity extends Activity { private ListView listView; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); listView = new ListView(this); //android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字 listView.setAdapter((ListAdapter) new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listView); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, getData())); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);} private List<String> getData(){ List<String> data = new ArrayList<String>(); data.add("【计算机网络】数据链路层"); data.add("【计算机网络】应用层"); data.add("【信息论】香农定理"); data.add("【概率论】总结"); return data; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.guanli, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
android开发中是否可以用flutter来专门制作界面交互然后用android原生java响应事件实现功能?
就是在android studio中,不再使用原生的XML布局来写界面,而是用flutter来做界面、做页面跳转等交互。然后java类文件是否可以响应flutter的一些控件事件,并把通信结果返回给flutter? <br> **总的来说就是是否可以用flutter替代android原生XML布局,flutter管界面和交互,android原生sdk管功能实现,并能互相通信?** <br> **我要怎么做?**
在android模拟器中解析不到tomcat中的xml文件,
在android模拟器中解析不到tomcat中的xml文件,但是在浏览器中使用相同的地址,却可以访问 package xtm.mp3player; import xtm.download.HttpDownloader; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends ListActivity { private static final int UPDATE=1; private static final int ABOUT=2; /** *当用户点击MENU按钮之后,我们可以在这个方法中加入自己的按钮控件 */ public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, UPDATE, 1, R.string.mp3List_update); menu.add(0, ABOUT, 2, R.string.mp3List_about); return super.onCreateOptionsMenu(menu); } /** * 用来响应menu菜单中的按键,把索引值设置为静态变量,以免混淆。用静态变量也可以在以后容易修改。 */ public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==UPDATE){ String xml=downloadXMl("http://192.168.10.194:8080/mp3/resources.xml"); Log.d("xtmm", xml); }else if(item.getItemId()==ABOUT){ } return super.onOptionsItemSelected(item); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } private String downloadXMl(String urlStr){ HttpDownloader httpDownloader=new HttpDownloader(); String result=httpDownloader.download("urlStr"); Log.d("xtmm", result); return result; } } package xtm.download; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpDownloader { /** * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容 * 1.创建一个URL对象 * 2.通过URL对象,创建一个HttpURLConnection对象 * 3.得到InputStram * 4.从InputStream当中读取数据 * @param urlStr * @return */ public String download(String urlStr) { StringBuffer sb = new StringBuffer(); String line = null; BufferedReader buffer = null; try { // 创建一个URL对象 URL url = new URL(urlStr); // 创建一个Http连接 HttpURLConnection urlConn = (HttpURLConnection) url .openConnection(); // 使用IO流读取数据 buffer = new BufferedReader(new InputStreamReader(urlConn .getInputStream())); while ((line = buffer.readLine()) != null) { sb.append(line); } } catch (Exception e) { e.printStackTrace(); } finally { try { buffer.close(); } catch (Exception e) { e.printStackTrace(); } } return sb.toString(); } } "http://192.168.10.194:8080/mp3/resources.xml"用这个在浏览器中能访问到,可是无法在android模拟器中解析不到tomcat中的xml文件,麻烦帮忙解答一下,谢谢
android使用代码布局LInearLayout达不到xml的效果
用XML布局,能够将TextView控件居中,而代码布局不能将TextView控件居中。 经测试,代码布局中,addView函数对LayoutParams参数添加进的gravity和leftMargin等属性未进行应有的操作,但能够对宽高的设定进行对应的操作。 在NEXUS 4(android 4.3)和我自己的手机(android 4.1.2)上测试,都存在这样的问题。 百度和谷歌都未找到我想要的答案或类似情况。 如果需要LinearLayout里面的控件全部居中的话,将LinearLayout的gravity设置为Gravity.CENTER即可,但我希望一些控件左对齐,一些居中。 希望得到大家的帮助,谢谢! XML布局文件代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Button" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="TextView" /> </LinearLayout> java文件布局代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.layout); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); LinearLayout mainLayout = new LinearLayout(this); mainLayout.setOrientation(LinearLayout.VERTICAL); setContentView(mainLayout, lp); lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.CENTER; Button button = new Button(this); button.setText("Button"); mainLayout.addView(button, lp); lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.CENTER; TextView textView = new TextView(this); textView.setText("TextView"); mainLayout.addView(textView, lp); }
Android自定义控件时遇到的奇怪bug:
《第一行代码——Android》第三章 3.4 自定义控件 问题 示例代码需要新建一个布局:title.xml 我进行了如下操作: (1) ![图片说明](https://img-ask.csdn.net/upload/201602/02/1454386630_445622.png) (2) ![ 图片说明](https://img-ask.csdn.net/upload/201602/02/1454386538_122780.png) ## 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" android:orientation="horizontal"> <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="#000" /> <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="Title Text" android:textColor="#fff" android:textSize="24sp" /> <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="#000" /> </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"/> </LinearLayout> ``` ## MainActivity.java: ``` package com.test.lichee.uicustomviews; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Window; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); } } ``` ## 运行后出现如下报错: ``` 02-02 12:01:38.180 6186-6186/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.test.lichee.uicustomviews, PID: 6186 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.lichee.uicustomviews/com.test.lichee.uicustomviews.MainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2371) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423) at android.app.ActivityThread.access$800(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5332) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641) at dalvik.system.NativeStart.main(Native Method) Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:292) at android.app.Activity.requestWindowFeature(Activity.java:3408) at com.test.lichee.uicustomviews.MainActivity.onCreate(MainActivity.java:12) at android.app.Activity.performCreate(Activity.java:5369) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1096) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2335) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2423)  at android.app.ActivityThread.access$800(ActivityThread.java:155)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)  at android.os.Handler.dispatchMessage(Handler.java:110)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:5332)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)  at dalvik.system.NativeStart.main(Native Method)  可是可以看见,我的MainActivity.java中并没有错,出现了Error信息与实际情况不符合的现象。很奇怪,我认为应该是我创建title时出了问题。 ``` ## 我的引入的图片如下: ![图片说明](https://img-ask.csdn.net/upload/201602/02/1454386568_196077.png)
android 第一次做自定义控件 java.lang.RuntimeException异常
package com.example.q9722.biancheng; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.TextView; /** * Created by q9722 on 2018/1/1. */ public class test_text extends TextView { private String mText = "111",mNumber = "222"; private Paint mPaint; private Rect mNumberRect; public test_text(Context context, String mText, String mNumber) { this(context, null, mText, mNumber); } public test_text(Context context, AttributeSet attrs, String mText, String mNumber) { this(context, attrs, 0, mText, mNumber); } public test_text(Context context, AttributeSet attrs, int defStyleAttr, String mText, String mNumber) { super(context, attrs, defStyleAttr); this.mText = mText; this.mNumber = mNumber; init(); } private void init() { mPaint = new Paint(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.STROKE); canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint); canvas.drawCircle(getWidth()/6*4, getHeight()/4*3,getHeight()/4,mPaint); mPaint.setTextSize(18); mPaint.getTextBounds(mNumber, 0, mNumber.length(), mNumberRect); canvas.drawText(mText, 2 ,getHeight()/5,mPaint); canvas.drawText(mNumber, (getWidth()/6*4)-(mNumberRect.width()/2), (getHeight()/4*3)-(mNumberRect.hashCode()/2), mPaint); } } 01/01 18:58:49: Launching app $ adb push C:\Users\q9722\AndroidStudioProjects\BianCheng\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.example.q9722.biancheng $ adb shell pm install -r "/data/local/tmp/com.example.q9722.biancheng" Success $ adb shell am start -n "com.example.q9722.biancheng/com.example.q9722.biancheng.SplashActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Client not ready yet..Waiting for process to come online Connected to process 30129 on device xiaomi-mi_5-43ac216f W/System: ClassLoader referenced unknown path: /data/app/com.example.q9722.biancheng-1/lib/arm64 I/InstantRun: Instant Run Runtime started. Android package is com.example.q9722.biancheng, real application class is null. W/System: ClassLoader referenced unknown path: /data/app/com.example.q9722.biancheng-1/lib/arm64 W/MIUI-BLOCK-MONITOR: The msg { when=-72ms what=110 obj=AppBindData{appInfo=ApplicationInfo{7c1e14a com.example.q9722.biancheng}} target=android.app.ActivityThread$H planTime=1514804333143 dispatchTime=1514804333215 finishTime=0 } took 3826ms and took 3754ms after dispatch. W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable W/System: ClassLoader referenced unknown path: /system/app/MiuiContentCatcher/lib/arm64 D/AccessibilityManager: current package=com.example.q9722.biancheng, accessibility manager mIsFinalEnabled=false, mOptimizeEnabled=true, mIsUiAutomationEnabled=false, mIsInterestedPackage=false V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@717395 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@bc3ccaa V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@664d14e D/ActivityThreadInjector: clearCachedDrawables. I/Adreno: QUALCOMM build : 620c068, I09d312ff84 Build Date : 08/07/17 OpenGL ES Shader Compiler Version: XE031.09.00.04 Local Branch : Remote Branch : Remote Branch : Reconstruct Branch : I/Choreographer: Skipped 33 frames! The application may be doing too much work on its main thread. I/OpenGLRenderer: Initialized EGL, version 1.4 D/OpenGLRenderer: Swap behavior 1 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@c8e9e47 I/Timeline: Timeline: Activity_launch_request time:84494803 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@cd359d1 V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@4011c36 D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.q9722.biancheng, PID: 30129 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.q9722.biancheng/com.example.q9722.biancheng.MainActivity}: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.example.q9722.biancheng.test_text at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6321) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770) Caused by: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.example.q9722.biancheng.test_text Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class com.example.q9722.biancheng.test_text Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] at java.lang.Class.getConstructor0(Class.java:2204) at java.lang.Class.getConstructor(Class.java:1683) at android.view.LayoutInflater.createView(LayoutInflater.java:622) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752) at android.view.LayoutInflater.rInflate(LayoutInflater.java:883) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846) at android.view.LayoutInflater.inflate(LayoutInflater.java:522) at android.view.LayoutInflater.inflate(LayoutInflater.java:430) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.example.q9722.biancheng.MainActivity.onCreate(MainActivity.java:17) at android.app.Activity.performCreate(Activity.java:6847) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6321) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770) Application terminated.
如何在代码中设置控件不可获取焦点?
在XML文件里面,可以配置:android:focusable="true" 这样控件就可以获取焦点了。 但是,我想在java代码中让它不能获取焦点,如何做呢? 我尝试了下面的方法,没有效果啊: item.setFocusable(false); item.setFocusableInTouchMode(false); 求帮忙^_^
android library中的toolbar设置android:theme属性不生效
正在封装一个库,打算封装一个BaseToolbarActivity,打算用于以后的使用,但是我在库里面的xml中设置的属性,没有效果,求教 ``` java /** * Created by leo on 2017/6/16. * 在需要使用带有标题(Toolbar实现)的Activity时继承此activity。使用此activity,需要主题style配合。<br/> * 实现了对Toolbar的简单封装,以及沉浸式状态栏<br> * 沉浸式状态栏,当Android 版本 大于4.4小于5.0时,需要指定颜色,不然默认黑色,当Android版本大于5.0时,颜色默认为主题颜色<br> * toolbar的加载操作由BaseToolBarActivity完成,布局中不需要对其进行布局<br> * 在复写方法时,请调用super方法 */ public abstract class BaseToolBarActivity extends BaseActivity { private Toolbar mToolBar; private TextView mTextView; private RelativeLayout rootView; // private Unbinder mUnBinder; // @Override // protected void onDestroy() { // super.onDestroy(); // mUnBinder.unbind(); // } @Override protected final void initView() { // View baseView = LayoutInflater.from(this).inflate(R.layout.activity_base_title, null); // rootView = (RelativeLayout) baseView.findViewById(R.id.rl_rootView); // mToolBar = (Toolbar) baseView.findViewById(R.id.tb_baseToolbar); // // mToolBar.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); // mTextView = (TextView) baseView.findViewById(R.id.tv_baseTitle); // mTextView.setText(getTitleBarText()); // View userView = LayoutInflater.from(this).inflate(getLayoutResource(), null); // if (userView != null) { // RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); // layoutParams.addRule(RelativeLayout.BELOW, R.id.tb_baseToolbar); // rootView.addView(userView, layoutParams); // mUnBinder = ButterKnife.bind(this, userView); // } setContentView(R.layout.activity_base_title); /******/ rootView = (RelativeLayout) findViewById(R.id.rl_rootView); mToolBar = (Toolbar)findViewById(R.id.tb_baseToolbar); mToolBar.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); mTextView = (TextView) findViewById(R.id.tv_baseTitle); mTextView.setText(getTitleBarText()); View userView = LayoutInflater.from(this).inflate(getLayoutResource(), null); if (userView != null) { RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); layoutParams.addRule(RelativeLayout.BELOW, R.id.tb_baseToolbar); rootView.addView(userView, layoutParams); mUnBinder = ButterKnife.bind(this, userView); } /*****/ setSupportActionBar(mToolBar); getSupportActionBar().setDisplayShowTitleEnabled(false); StatusBarCompat.compat(this); } /** * 设置标题 * * @return title的标题 */ protected abstract String getTitleBarText(); /** * 设置是否显示返回按钮 * * @param show true表示设置返回按钮 */ protected void enableBackIcon(boolean show) { if (show) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); mToolBar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } else { getSupportActionBar().setDisplayHomeAsUpEnabled(false); mToolBar.setNavigationOnClickListener(null); } } /** * 设置标题栏颜色。状态栏会使用默认颜色 * * @param titleBarColor 颜色 */ protected void setTitleBarColor(@ColorInt int titleBarColor) { this.setTitleBarColor(titleBarColor, -1); } /** * 设置titleBar文字 * * @param title 标题文字 */ protected void setTitleBarText(String title) { mTextView.setText(title); } /** * 设置标题栏颜色,与状态栏颜色 * * @param titleBarColor 标题栏颜色 * @param statusBarColor 状态栏颜色 */ protected void setTitleBarColor(@ColorInt int titleBarColor, @ColorInt int statusBarColor) { mToolBar.setBackgroundColor(titleBarColor); StatusBarCompat.compat(this, statusBarColor); } /** * 设置标题文字大小 * * @param size 大小 */ protected void setTitleSize(float size) { mTextView.setTextSize(size); } /** * 取得Toolbar实例。 * 取得实例用于与drawerlayout等控件结合使用,请不要取得toolbar实例后直接操作。 * * @return toolbar */ protected Toolbar getToolbarInstance() { return mToolBar; } /** * 设置标题文字颜色 * * @param titleBarColor 颜色 */ protected void setTitleTextColor(@ColorInt int titleBarColor) { mTextView.setTextColor(titleBarColor); } } ``` ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_rootView" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/tb_baseToolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:theme="@style/MyToolbarStyle"> <TextView android:id="@+id/tv_baseTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textColor="#ffffff" android:textSize="18sp" /> </android.support.v7.widget.Toolbar> </RelativeLayout> ``` ``` <style name="MyToolbarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">?actionBarSize</item> <item name="android:textColorPrimaryInverse">@color/white</item> <item name="android:textColorPrimary">@color/white</item> <item name="android:actionMenuTextColor">@android:color/holo_green_light</item> </style> ```
如何使组合控件可悬浮拖动实现返回顶部的功能?(问题已经解决,原因是FloatingView写的有问题)
我有一个创建了一个组合控件,然后想让这个组合控件在页面内随意拖动实现返回顶部的功能,然后FloatingView继承了这个组合控件后,使用报运行时异常,请问我该怎么修改?谢谢 下面是组合控件: ``` public class BackTopView extends RelativeLayout { private TextView text_view; private View rootView; private String back_text; public BackTopView(Context context) { super(context); init(); } public BackTopView(Context context, AttributeSet attrs) { super(context, attrs); init(); back_text=attrs.getAttributeValue("http://schemas.android.com/apk/res-auto","setting_text"); text_view.setText(back_text); } public BackTopView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init(){ rootView=View.inflate(getContext(), R.layout.back_top_layout,this); text_view=rootView.findViewById(R.id.back_text); } public void setText(String text){ text_view.setText(text); } } ``` 下面是悬浮实现 ``` public class FloatingView extends BackTopView { int startX; int startY; int left; int top; int[] temp = new int[]{ 200, 200 }; public FloatingView(Context context) { super(context); } @Override public boolean onTouchEvent(MotionEvent event) { boolean isMove = false; int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: // touch down so check if the startX = x; startY = y; temp[0] = (int) event.getX(); temp[1] = y - getTop(); break; case MotionEvent.ACTION_MOVE: // touch drag with the ball left = x - temp[0]; top = y - temp[1]; if(left < 0){//控制左边界不超出 left = 0; } layout(left, top, left + getWidth(),top + getHeight());//自由拖拽 break; case MotionEvent.ACTION_UP: if (Math.abs(x - startX) > 2 || Math.abs(y - startY) > 2){//判断是否移动,再一定范围内不算是移动,解决触发事件冲突 //将最后拖拽的位置定下来,否则页面刷新渲染后按钮会自动回到初始位置 //注意父容器 RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) getLayoutParams(); lp.setMargins(left, top,0,0); setLayoutParams(lp); //确定是拖拽 isMove = true; } break; } return isMove ? true : super.onTouchEvent(event); } } ``` 引用到的XML ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/first_layout" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".AssetsActivity" android:orientation="vertical" android:clickable="true" android:focusableInTouchMode="true"> <RelativeLayout android:id="@+id/edit_relativew" android:layout_marginTop="15dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/edit_frame_shape"> <EditText android:id="@+id/assets_edit" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginLeft="16dp" android:layout_marginRight="15dp" android:background="@null" android:hint=" 搜索设备" android:imeOptions="actionSearch" android:singleLine="true"></EditText> <ImageButton android:id="@+id/assets_btu" android:layout_alignRight="@id/assets_edit" android:layout_centerVertical="true" android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="center" android:background="@drawable/select"> </ImageButton> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/edit_relativew" android:layout_marginTop="10dp" android:orientation="vertical"> <com.zxkj.e_delivermaintain.Adapter.LoadListView android:id="@+id/assets_list" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null"> </com.zxkj.e_delivermaintain.Adapter.LoadListView> </RelativeLayout> <include android:id="@+id/emptyview" layout="@layout/list_empty"/> <com.zxkj.e_delivermaintain.Adapter.FloatingView android:id="@+id/back_top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"> </com.zxkj.e_delivermaintain.Adapter.FloatingView> </RelativeLayout> ``` 报错内容 ``` java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zxkj.e_delivermaintain/com.zxkj.e_delivermaintain.AssetsActivity}: android.view.InflateException: Binary XML file line #68: Binary XML file line #68: Error inflating class com.zxkj.e_delivermaintain.Adapter.FloatingView ``` 谢谢你的帮助!!
Android使用Switch控件会出现一串数字
JAVA代码部分 ``` private void initLeftMenu() { //侧滑菜单初始化函数,设置Adapter this.initTextSwitch("自动更新"); this.initTextSwitch("多彩界面"); this.initExpList(); this.initExpList(); this.leftMenuListDataAdapter1 = new SimpleAdapter(this, this.leftMenuDataList, R.layout.liststyle_text_swc, new String[]{"btnName","setBtn"}, new int[]{R.id.btnName,R.id.setSwitch}); this.leftMenuList.setAdapter(leftMenuListDataAdapter1); // this.leftMenuListDataAdapter2 = new SimpleAdapter(); // this.leftMenuList.setAdapter(leftMenuListDataAdapter2); /** 未实现 **/ } private void initTextSwitch(String value){ //侧滑菜单初始化函数,初始化<TextView+Switch>,被initLeftMenu()方法调用 Map<String,String> map = new HashMap<String,String>(); map.put("btnName",value); map.put("setBtn",String.valueOf(R.id.setSwitch)); leftMenuDataList.add(map); } ``` XML文件代码 ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/btnName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="#de000000" android:layout_marginLeft="16dp" /> <Switch android:id="@+id/setSwitch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="72dp" /> </LinearLayout> ![图片说明](https://img-ask.csdn.net/upload/201509/16/1442365436_853667.jpg) ```
自定义组合控件onDraw()方法死循环
自定义了一个组合控件,继承自LinearLayout,逻辑很简单,就是想实现一个带title的EditText。为了便于分析问题,已经将代码中的attrs.xml的属性删除,只留下导致问题出现的部分。 自定义控件的JAVA代码: package com.shuda.epmms.customview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; /** * * 自定义带Title的文本编辑输入框 * * @author Justin Z * */ public class CusEditText extends LinearLayout { /** * title */ private TextView titleView; /** * content */ private EditText contentView; public CusEditText(Context context) { super(context); } /** * 构造方法 * * @param context * @param attrs */ public CusEditText(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.cus_edit_text_layout, this, true); // title this.titleView = (TextView) findViewById(R.id.cusEditTextTitle); // content this.contentView = (EditText) findViewById(R.id.cusEditTextContent); this.setBackgroundDrawable(getResources().getDrawable( R.drawable.title_edit_normal)); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); System.out.println("调用onDraw()"); } } 布局文件cus_edit_text_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical"> <TextView android:id="@+id/cusEditTextTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="4"/> <EditText android:id="@+id/cusEditTextContent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true" android:background="@color/none"/> </LinearLayout> Activity代码: package com.shuda.epmms.customview; import android.app.Activity; import android.os.Bundle; public class CusEditTextActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 布局文件 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/white" android:orientation="vertical" android:paddingLeft="10dp" android:paddingRight="10dp"> <com.shuda.epmms.customview.CusEditText android:layout_width="fill_parent" android:layout_height="50dp" android:background="@drawable/title_edit_selector" android:focusable="true" /> <EditText android:layout_width="fill_parent" android:layout_height="50dp" android:background="@drawable/title_edit_selector" android:text="输入框" /> </LinearLayout> 程序运行起来之后,会发现logcat中不停的打印“调用onDraw()”,在模拟机中改变当前的焦点到另外一个EditText中,打印就会停止,如果焦点切换回自定义控件中,打印又会继续 删除自定义控件类中的setBackgroundDrawable方法之后就不会出现上述问题,求解答??
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> ``` 求助 折腾了好久 导入别人的工程 上面这四份代码完全一样 别人的点击有反应 自己的没反应
报错view.InflateException: Binary XML file line
比较老的项目,主界页面使用的TabActivity切换,在首页的viewpager中的fragment的布局文件中报错,布局文件报错为一个TextView,样式很简单,但是报错,尝试将该TextView注释后,依然报错,显示为首页的另一个控件,感觉和项目配置有关,目前仍然找不到错误,在华为Mate10上打开直接关闭,在荣耀v8和mate9pro上可以正常打开,以下是报错日志,求大神指点 android.view.InflateException: Binary XML file line #22: Binary XML file line #22: Error inflating class android.widget.TextView Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class android.widget.TextView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:334) at android.view.LayoutInflater.createView(LayoutInflater.java:647) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.rInflate(LayoutInflater.java:866) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at com.tidemedia.nntv.sliding.fragment.TuijianFragment.onCreateView(TuijianFragment.java:134) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) at android.support.v4.view.ViewPager.populate(ViewPager.java:1116) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642) at android.view.View.measure(View.java:21998) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 以下是xml布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="180dp"> <android.support.v4.view.ViewPager android:id="@+id/newsGallery" android:layout_width="match_parent" android:layout_height="180dp" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="30dp" android:layout_alignParentBottom="true" android:background="#64000000"> <android.widget.TextView android:id="@+id/viewpager_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:lines="1" android:textColor="@color/white" android:textSize="15sp" /> </RelativeLayout>
Android xml布局中增加新的ID运行时就会崩溃,困扰好久了
修改别人的项目 其中使用的是 黄刀油 注解式绑定控件 但凡增加新的ID就会运行时就会崩溃,报错信息如下 Caused by: java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout Caused by: java.lang.RuntimeException: Unable to bind views for com.wyy.myhealth.MainActivity
Android surfaceview控件高度超过8192就不回调surfaceCreated( )函数
**一、问题:** 自己自定义了一个surfaceview,在onMeasurea方法中设置该控件的高度,发现一旦超过8192就不会回调surfaceCreated( )函数,是什么原因造成的?一直想不通为什么会不回调...有这个限制吗? **二、测试的例子:** 这里把surfaceview放到scrollview中,可以上下滑动查看。(把scrollview去掉也出现同样的问题) 当高度大于8192时,查看log打印的信息,发现没有调用surfaceCreated( )。 ``` **1、自定义的TestSurfaceView.java** package com.hebei.textviewdemo6; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; public class TestSurfaceView extends SurfaceView implements SurfaceHolder.Callback{ public TestSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub SurfaceHolder holder = getHolder(); holder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub Log.d("surfaceCreated", "created"); Log.d("surfaceCreated", "widht = "+this.getWidth()+" height = "+this.getHeight()); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub Log.d("surfaceChanged", "changed"); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub Log.d("surfaceDestoryed", "destoryed"); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = MeasureSpec.getSize(widthMeasureSpec); int height = 8193; Log.d("onMeasure", "Width = "+width+" Height = "+height); setMeasuredDimension(width, height); } } **2、xml文件** <RelativeLayout 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" tools:context="com.hebei.textviewdemo6.MainActivity" > <ScrollView android:id="@+id/scrollview_demo6" android:layout_width="120dp" android:layout_height="120dp" android:background="#FF0000" android:fadingEdge="vertical" android:scrollbars="vertical" > <com.hebei.textviewdemo6.TestSurfaceView android:layout_width="match_parent" android:layout_height="wrap_content" /> </ScrollView> </RelativeLayout> **3、MainActivity.java** public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d("onCreate", "create"); } } ```
自定义控件引入布局,引用标题布局
<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="24sp" /> <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/back_bg" android:text="Edit" android:textColor="#fff" /> </LinearLayout>//title.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" /> </LinearLayout>//activity_main.xml文件 package com.example.uicustomviews; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; 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); } }//MainActivity_main.java 新建了一个title.xml文件,想做为新的标题栏,在引用之后,运行程序之后这个xml文件会占满整个屏幕,而不是作为标题栏
RecyclerView中点击item跳转到其他Activity并显示item内容如何实现?
适配器代码 ``` package com.example.uilayout.adapter; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.uilayout.R; import com.example.uilayout.model.Msg; import java.util.List; /** * Created by 夏雨来 on 2018/11/20. */ public class MsgListAdapter extends RecyclerView.Adapter<MsgListAdapter.viewHolder> { private List<Msg> msgList; //1、创建构造函数 //构造函数参数是list的集合,他是rv直接的数据来源 //在做Adapter实例化的时候必须传入list的集合数据 public MsgListAdapter(List<Msg> msgList) { this.msgList = msgList; } //2、创建类ViewHolder(视图容器),承载的是条目中的控件 //做条目中控件的声明和绑定 class viewHolder extends RecyclerView.ViewHolder{ ImageView iv_head; TextView tv_friend; TextView tv_message; TextView tv_time; View itemView; public viewHolder(View itemView) { super(itemView); //itemView的值由一步一步传递过来的 this.itemView=itemView; iv_head=itemView.findViewById(R.id.iv_head); tv_friend=itemView.findViewById(R.id.tv_friend); tv_message=itemView.findViewById(R.id.tv_message); tv_time=itemView.findViewById(R.id.tv_time); } } //创建ViewHolder对象 // @Override public viewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View itemView = View.inflate(viewGroup.getContext(),R.layout.item_msglist,null); viewHolder holder=new viewHolder(itemView); return holder; } //给ViewHolder中的控件设置数据 @Override public void onBindViewHolder(final viewHolder viewHolder, final int i) { final Msg msg = msgList.get(i); viewHolder.iv_head.setImageResource(msg.getImage_head()); viewHolder.tv_friend.setText(msg.getFriend()); viewHolder.tv_message.setText(msg.getMessage()); viewHolder.tv_time.setText(msg.getTime()); //设置条目中的点击监听 viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(view.getContext(), "你想与" + msg.getFriend() + "聊天", Toast.LENGTH_SHORT).show(); // TextView friendView=view.findViewById(R.id.tv_friend); // Intent intent=new Intent(); // Intent intent=new Intent(mContext,ChatActivity.class); // intent.putExtra("friend",msg.getFriend().toString()); // mContext.startActivity(intent); } }); //设置条目中具体控件的点击监听 // viewHolder.iv_head.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View view) { // Toast.makeText(view.getContext(), "你点击了"+msg.getFriend()+"头像", Toast.LENGTH_SHORT).show(); // } // }); } @Override public int getItemCount() { return msgList.size(); } } ``` Activity代码 ``` package com.example.uilayout.activity; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import com.example.uilayout.model.Msg; import com.example.uilayout.adapter.MsgListAdapter; import com.example.uilayout.R; import com.example.uilayout.utils.MySQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class MsgListActivity extends AppCompatActivity { RecyclerView rv; List<Msg> msgList = new ArrayList<>(); // TextView friend; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_msglist); rv = findViewById(R.id.rv); // friend =findViewById(R.id.tv_friend); //给rv设置线性布局 rv.setLayoutManager(new LinearLayoutManager(this)); //初始化List集合数据 // initList(msgList); initListFromDB(); //给rv设置适配器 rv.setAdapter(new MsgListAdapter(msgList)); // MySQLiteOpenHelper helper=new MySQLiteOpenHelper(this,"wechat",null,1); // SQLiteDatabase db=helper.getWritableDatabase(); } public void initListFromDB() { MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "wechat", null, 1); SQLiteDatabase db = helper.getWritableDatabase(); Cursor cursor = db.query("msg", null, null, null, null, null, null); while (cursor.moveToNext()) { int headImageSrc = cursor.getInt(cursor.getColumnIndex("headImageSrc")); String friend = cursor.getString(cursor.getColumnIndex("friend")); String message = cursor.getString(cursor.getColumnIndex("message")); String time = cursor.getString(cursor.getColumnIndex("time")); Msg msg = new Msg(headImageSrc, friend, message, time); msgList.add(msg); } } } ``` 布局文件 ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:descendantFocusability="blocksDescendants" > <ImageView android:id="@+id/iv_head" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/a" android:layout_marginTop="5dp" android:layout_marginLeft="10dp" android:onClick="click" /> <TextView android:id="@+id/tv_friend" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="小张" android:textSize="20sp" android:textColor="#000" android:layout_toRightOf="@+id/iv_head" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:onClick="click" /> <TextView android:id="@+id/tv_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="你在干嘛" android:textSize="15sp" android:lines="1" android:layout_alignLeft="@+id/tv_friend" android:layout_marginTop="40dp" android:onClick="click" /> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="21:00" android:textSize="15sp" android:layout_alignTop="@+id/tv_friend" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:onClick="click" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#C0C0C0" android:layout_alignLeft="@+id/iv_head" android:layout_alignRight="@+id/tv_time" android:layout_marginTop="74dp" /> </RelativeLayout> ``` 未跳转时界面 ![未跳转时界面](https://img-ask.csdn.net/upload/201812/23/1545574749_907427.png) 效果,点击item跳转到另一个界面之后,界面显示与XX聊天,XX是由item中获取的 ![效果,点击item跳转到另一个界面之后,界面显示与XX聊天,XX是由item中获取的](https://img-ask.csdn.net/upload/201812/23/1545574974_525413.png)
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问