标签: android-layout

如何实现android:不伸展的背景?

我找到了这个伟大的主题,描述了如何"吃蛋糕并拥有它",即使用图像Button代替ImageButton(不允许SetText(),调整大小等).

这是通过使用View属性实现的:

android:background="@drawable/bgimage"
Run Code Online (Sandbox Code Playgroud)

唯一的问题是它会拉伸图像以适应按钮大小.

没有硬编码固定按钮大小(以像素为单位!),有没有办法告诉Android 不要拉伸背景图像并裁剪或填充它?

android android-layout

98
推荐指数
6
解决办法
10万
查看次数

使LinearLayout像Button一样

我有一个LinearLayout,我的样式看起来像一个按钮,它包含一些text/ImageView元素.我想让整个LinearLayout像一个按钮一样,特别是给它定义的状态,因此它在按下时具有不同的背景.

有没有比将ImageButton设置为整个布局和定位大小更好的方法?

android android-layout

97
推荐指数
7
解决办法
8万
查看次数

在屏幕android上更改Dialog的位置

AlertDialog在我的活动中做了一个简单的事:

View view = layoutInflater.inflate(R.layout.my_dialog, null);
AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this)
                    .setView(view)  
                    .create();

infoDialog.show();
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,对话框显示在屏幕的中心(大约).

我想知道,如何自定义对话框位置以使其显示在顶部操作栏下?(无论如何改变对话的重力或某些东西?)以及如何根据我的代码做到这一点?

android android-widget android-emulator android-intent android-layout

96
推荐指数
6
解决办法
11万
查看次数

错误:渲染问题无法找到以下类android.support.v7.internal.widget.ActionBarOverlayLayout

我只是Android应用程序开发的初学者.当我在Android Studio 1.1.0上创建一个新项目时,它放弃了这个错误" 渲染问题无法找到以下类:android.support.v7.internal.widget.ActionBarOverlayLayout "

现在我在google上搜索了这个,我发现大多数人可能会给出3个解决方案.

他们说:

  1. 将api(从预览窗口窗格)从22更改为21,或者

  2. 将应用主题从"项目主题"更改为任何其他主题.

  3. 一定要在项目结构中导入正确的appcompat-v7库 - >依赖项, 请参考以下步骤:将支持库功能项目标识符添加到依赖项部分.例如,要包含appcompat项目,请将compile"com.android.support:appcompat-v7:18.0.+"添加到依赖项部分,如以下示例所示:

dependencies {
    ...
    compile "com.android.support:appcompat-v7:18.0.+" }
Run Code Online (Sandbox Code Playgroud)

注意:我的android支持lib是最新的(使用SDK Manager安装它).

按照前两个步骤,删除错误.但我觉得这些不是永久的解决方案,第二步似乎就像一个临时的解决方法.我对第一步也有疑问,如果要删除错误,我们将api从22更改为21,最后,我们的应用程序将无法在Android 5.1.1(API 22)中运行,它将仅限于Android 5.0 .1及以下(API 21).我的疑惑有效吗?关于第三步,它是这个问题的永久解决方案吗?

PS:很抱歉标注不匹配,由于网站声誉,不允许添加确切的标记

android android-layout android-support-library

95
推荐指数
3
解决办法
10万
查看次数

java.lang.IllegalStateException:指定的子级已有父级

我正在使用片段,当我第一次实例化片段时.但第二次我得到了这个例外.我找不到出错的地方?

 04-04 08:51:54.320: E/AndroidRuntime(29713): FATAL EXCEPTION: main
    04-04 08:51:54.320: E/AndroidRuntime(29713): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.view.ViewGroup.addViewInner(ViewGroup.java:3013)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.view.ViewGroup.addView(ViewGroup.java:2902)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.view.ViewGroup.addView(ViewGroup.java:2859)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.view.ViewGroup.addView(ViewGroup.java:2839)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.support.v4.app.NoSaveStateFrameLayout.wrap(Unknown Source)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.support.v4.app.BackStackRecord.run(Unknown Source)
    04-04 08:51:54.320: E/AndroidRuntime(29713):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
    04-04 08:51:54.320: E/AndroidRuntime(29713): …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments

94
推荐指数
7
解决办法
10万
查看次数

Appcompatv7 - v21导航抽屉不显示汉堡包图标

我正在使用最新的appcompat支持库实现棒棒糖风格的导航抽屉,但问题是汉堡包图标永远不会显示.仅显示后退图标.

这是我的活动代码

import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.View;

public class Home extends ActionBarActivity {

private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    initViews();
}


private void initViews(){

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);


    toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
    setSupportActionBar(toolbar);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,toolbar ,  R.string.drawer_open, R.string.drawer_close) { 

        /** Called when a drawer has settled in a completely closed state. */ 
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            //getActionBar().setTitle(mTitle);
            //invalidateOptionsMenu(); …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-support-library android-navigation

94
推荐指数
7
解决办法
6万
查看次数

获得视图的边距

如何从活动中获取视图的边距值?视图可以是任何类型.

经过一些搜索后,我找到了获取视图填充的方法,但在边距上找不到任何内容.有人可以帮忙吗?

我试过这样的事,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
Run Code Online (Sandbox Code Playgroud)

这是有效的,但在上面的代码中我假设视图是一个LinearLayout.但margin即使我不知道视图类型,我也需要获取属性.

android android-layout android-view

93
推荐指数
3
解决办法
6万
查看次数

无法使自定义DialogFragment在Fragment上透明

我需要在片段上创建一个对话框(占据整个屏幕).该对话框需要是一个浮动对话框,它将定位在片段上,片段在片段外面变暗.

对于自定义对话框,我有一个具有弯曲边缘的linearLayout,无论我做什么,对话框都有一个黑色边缘(非常小).我已经尝试了一切使其透明并消失(所以所有的对话框只是线性布局 - 弯曲的盒子)

对于DialogFragment,这就是我对onCreateView的看法

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null);
    LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item);
    populateItemData(item, inflater);
    return layout;
}
Run Code Online (Sandbox Code Playgroud)

custom_dialog只是一个将android:backgroung设置为#000000的LinearLayout

这是我自定义Dialog的样式

<style name="CustomDialog" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:alwaysDrawnWithCache">false</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我尝试了这种风格的各种组合(从我在网上看到的)并且我无法摆脱那种恼人的黑色边界,如果我将LinearLayout背景设置为除了以外的任何其他颜色,我可以将其绘制为白色或任何其他颜色#000000 ...

我已经花了3-4个小时,我希望其他人可以帮忙...

android android-layout android-fragments android-dialog android-dialogfragment

93
推荐指数
7
解决办法
5万
查看次数

使用ListAdapter填充ScrollView布局中的LinearLayout

我面临一个非常普遍的问题:我制定了一项活动,现在事实证明它应该显示一些项目ScrollView.正常的方法是使用现有的ListAdapter,将它连接到一个ListViewBOOM我有我的项目列表.

但是你不应该把它嵌套ListView在一个,ScrollView因为它搞砸了滚动 - 甚至Android Lint抱怨它.

所以这是我的问题:

如何将a连接ListAdapterLinearLayout类似的东西?

我知道这个解决方案不会针对很多项目进行扩展,但我的列表很短(<10项),因此不需要重新查看视图.性能明智我可以将所有视图直接放入LinearLayout.

我想出的一个解决方案是将我现有的活动布局放在.的headerView部分ListView.但这感觉就像滥用这种机制所以我正在寻找一个更清洁的解决方案.

想法?

更新:为了激发正确的方向,我添加了一个示例布局来显示我的问题:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/news_detail_layout"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical"
              android:visibility="visible">


    <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#FFF"
            >

        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
                android:paddingLeft="@dimen/news_detail_layout_side_padding"
                android:paddingRight="@dimen/news_detail_layout_side_padding"
                android:paddingTop="@dimen/news_detail_layout_vertical_padding"
                android:paddingBottom="@dimen/news_detail_layout_vertical_padding"
                >

            <TextView
                    android:id="@+id/news_detail_date"
                    android:layout_height="wrap_content"
                    android:layout_width="fill_parent"
                    android:gravity="center_horizontal"
                    android:text="LALALA"
                    android:textSize="@dimen/news_detail_date_height"
                    android:textColor="@color/font_black"
                    />

            <Gallery
                    android:id="@+id/news_detail_image"
                    android:layout_height="wrap_content"
                    android:layout_width="fill_parent"
                    android:paddingTop="5dip"
                    android:paddingBottom="5dip"
                    />

            <TextView
                    android:id="@+id/news_detail_headline"
                    android:layout_height="wrap_content"
                    android:layout_width="fill_parent"
                    android:gravity="center_horizontal"
                    android:text="Some awesome …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter android-layout

93
推荐指数
2
解决办法
4万
查看次数

使用xml在Android TextView中使用自定义字体

我已将自定义字体文件添加到我的assets/fonts文件夹中.如何从我的XML中使用它?

我可以从代码中使用它如下:

TextView text = (TextView) findViewById(R.id.textview03);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Molot.otf");
text.setTypeface(tf);
Run Code Online (Sandbox Code Playgroud)

我不能使用android:typeface="/fonts/Molot.otf"属性从XML做到吗?

java xml fonts android android-layout

91
推荐指数
8
解决办法
13万
查看次数