我正在做一个小型库来封装适配器功能,我需要以编程方式获取视图的名称.例如:
<ImageView
android:id="@+id/**ivPerson**"
android:layout_width="80dp"
android:layout_height="80dp"/>
Run Code Online (Sandbox Code Playgroud)
现在,在代码中我有视图(ImageView),我需要获取视图的名称 - > ivPerson.我可以通过view.getId()获取id,但这不是我需要的.
有可能的?
我试过这个:
String name = context.getResources().getResourceEntryName(view.getId());
Run Code Online (Sandbox Code Playgroud)
但不行.
我正在Android平台上使用XMPP协议和Openfire服务器实现消息传递应用程序.我需要保存并加载自己的Vcard和其他用户vcard.目前,我设法将我的vCard保存在服务器上并可以再次加载它.问题在于其他用户的Vcards,服务器总是返回XMPPError:功能未实现 - 取消.
我用这个库:
compile 'org.igniterealtime.smack:smack-android:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-tcp:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-extensions:4.1.2-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)
显示代码:
保存我自己的Vcard(工作正常).
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
VCard vCard;
vCard = vCardManager.loadVCard();
vCard.setNickName("User name");
URL urldefault = new URL("Avatar URL");
InputStream stream = urldefault.openStream();
byte[] avatar1 = readBytes(stream);
vCard.setAvatar(avatar1, "avatar1/jpg");
vCard.setEmailHome("user email");
vCard.setPhoneHome("mobile", "888888888");
vCardManager.saveVCard(vCard);
Run Code Online (Sandbox Code Playgroud)
加载我自己的Vcard(工作正常)
VCard vCard = null;
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
vCard = vCardManager.loadVCard();
Run Code Online (Sandbox Code Playgroud)
问题出在这里.加载其他用户Vcard:
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
boolean isSupported = vCardManager.isSupported(user);
if (isSupported) // return true
vCard = vCardManager.loadVCard(user);
Run Code Online (Sandbox Code Playgroud)
加载Vcard的用户名是正确的.
有任何想法吗?
提前致谢.
我首先在我的应用程序中使用Material设计,我的问题是当我创建活动时没有操作栏或工具栏但是我有Material Navigation抽屉为什么它没有像旧版本那样自动实现活动布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView4" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动:包装碎片;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
public class Noname1 extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
我的主题:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/nliveo_green_colorPrimary</item>
<item name="colorPrimaryDark">@color/nliveo_green_colorPrimaryDark</item>
<item name="colorAccent">@color/nliveo_green_colorPrimary</item>
<item name="android:textColorPrimary">@color/myTextPrimaryColor</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="android:windowBackground">@color/myWindowBackground</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我试图使用ScrollView使用CollapsingToolbarLayout,但我没有让它工作.我试试这个:
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_below="@+id/toolbar"
android:scrollbars="none"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="192dp"
android:layout_height="match_parent">
<LinearLayout android:layout_width="match_parent"
android:orientation="vertical"
android:padding="@dimen/medium_padding"
android:layout_height="match_parent">
<!-- my content -->
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"></android.support.v7.widget.Toolbar>
<ImageView
android:src="@drawable/fondo_drawer"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
app:layout_collapseMode="parallax"
android:minHeight="100dp"/>
</android.support.design.widget.CollapsingToolbarLayout>
Run Code Online (Sandbox Code Playgroud)
我用ScrollView和NestedScrollView测试失败了.
有任何想法吗?提前致谢!
在添加WindowManager之前,如何知道是否显示视图?我需要在原生拨号器中放置一个叠加层,但有时将原生拨号器放在mi自定义视图上方,我通过使用WindowManager多次添加元素来解决这个问题,但有时候视图会显示两次.
谢谢!!
private void callStartIncomingCallScreen(Context context, String incomingNumber) {
startIncomingCallScreen(context, incomingNumber);
Timer timer = new Timer();
for (int i = 0; i < 2; i++) {
timer.schedule(new StartIncomingCallScreenTimerTask(context, incomingNumber), 100 * i);
}
}
class StartIncomingCallScreenTimerTask extends TimerTask {
private Context context;
private String incomingNumber;
StartIncomingCallScreenTimerTask(Context context, String incomingNumber) {
this.context = context;
this.incomingNumber = incomingNumber;
}
public void run() {
Intent intent = new Intent(context, IncomingCallGuiService.class);
context.startService(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
在IncomingCallGuiService中,我添加如下视图:
final LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
LayoutParams.TYPE_SYSTEM_ALERT, …Run Code Online (Sandbox Code Playgroud)