小编jul*_*jul的帖子

如何更改DialogFragment周围的背景颜色?

我正在建立一个习惯DialogFragment.对话框布局设置为my_dialog.xml,但如何修改对话框周围的颜色(透明灰色)?

在此输入图像描述

my_dialog.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" >

    <TextView
        android:id="@+id/hello"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@android:color/holo_orange_light"
        android:gravity="center"
        android:text="hello" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

MyDialogFragment.java

public class MyDialogFragment extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.my_dialog, container);

        getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);

        return view;
    }
}
Run Code Online (Sandbox Code Playgroud)

android background android-dialogfragment android-styles

41
推荐指数
4
解决办法
6万
查看次数

如何在onSaveInstanceState中保存自定义类的实例?

我创建了一个自定义类RestaurantList的实例来保存我的数据(从Web服务接收的餐馆数据列表作为json数据).

我该如何保存onSaveInstanceState

android

37
推荐指数
1
解决办法
5万
查看次数

如何禁用"返回"某些活动?

我不希望用户能够回到我的应用程序的启动画面.一个解决方案似乎是检查当前活动下面的活动是否是启动画面的实例,并在这种情况下退出应用程序,如下面的代码所示.但是,我不知道如何检查堆栈中之前的活动是什么.有人可以帮忙吗?有没有其他方法可以禁用"返回"给定的活动?

@Override
public void onBackPressed() { 
    if(<previous activity in stack is an instance of splashscreen>){   
        Intent exit_intent=new Intent(CurrentActivity.this, SplashScreen.class);
        exit_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        exit_intent.putExtra("EXIT", true);
        context.startActivity(exit_intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

stack android android-activity

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

手势检测和ScrollView问题

我正在尝试使用包含ScrollViews的ViewFlipper创建布局.我们的想法是检测水平滑动以移动到上一个/下一个ScrollView.此外,ScrollView包含另一个ViewFlipper,其中包含带有垂直滑动检测器的ImageView,可以转到上一个/下一个ImageView.当我用LinearLayout替换ScrollView时,两个手势检测器都能正常工作,但是使用ScrollView时,没有任何工作(手势监听器甚至不是触发器).为什么使用ScrollView会禁用我的手势检测器?我怎样才能使它工作?

活动

public class ProduitHome extends Activity{  

    private Resources res;
    float density;

    private int position, parent_id;;
    private int num_products;

    private Produit produit;
    private ImageDownloader mImageLoader;   

    private ViewFlipper product_viewflipper;
    private ScrollView current_product_layout;
    Animation next_product_out, next_product_in, previous_product_in, previous_product_out;

    private GestureDetector galleryGestureDetector;
    private View.OnTouchListener galleryGestureListener;

    private GestureDetector productGestureDetector;
    private View.OnTouchListener productGestureListener;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.produit_home);

        num_products = GlobalData.map_list_produits.get(parent_id).size();

        product_viewflipper = (ViewFlipper) findViewById(R.id.product_viewflipper);

        LayoutInflater inflater = getLayoutInflater();


        // Add num_products view to the viewflipper

        for(int i=0; i<num_products; i++){
            ScrollView product_detail …
Run Code Online (Sandbox Code Playgroud)

android scrollview gesture

31
推荐指数
2
解决办法
3万
查看次数

如何直接查询Django为ManyToMany关系创建的表?

我有一个模型,MyModel2ManyToManyField相关的另一种模式MyModel1.

我如何获得对mymodel1.id, mymodel2.id,如Django为这种关系创建的表中所示?我是否必须在此表上执行原始SQL查询,或者是否可以通过此模型的对象管理器进行查询?

class MyModel1(models.Model):
    name = models.CharField(max_length=50)


class MyModel2(models.Model):
    name = models.CharField(max_length=50)
    mymodel1 = models.ManyToManyField(MyModel1)
Run Code Online (Sandbox Code Playgroud)

python django many-to-many

27
推荐指数
1
解决办法
6174
查看次数

无法获取clipChildren = false属性

我有一个黄色,RelativeLayout含有较高的红色LinearLayout.

为了使整体LinearLayout可见,我设置android:clipChildren="false",但这不能按预期工作:

<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="44dp"
    android:background="#FFFF00"
    android:clipChildren="false" >

    <LinearLayout
        android:layout_width="50dp"
        android:layout_height="100dp"
        android:background="#FF0000"
        android:orientation="vertical" >

    </LinearLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
  • android:clipChildren="true":

在此输入图像描述

红色LinearLayout按预期剪裁

  • android:clipChildren="false":

在此输入图像描述

其中LinearLayout高度被削波,并且在布局中设置的宽度不尊重.

怎么了?

编辑

如果我将容器包装在LinearLayout两个尺寸与其父级匹配的容器中,我得到相同的结果(我检查了LinearLayout容器的容器填满整个屏幕).

<LinearLayout 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">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:background="#FFFF00"
        android:clipChildren="false" >

        <LinearLayout
            android:layout_width="50dp"
            android:layout_height="100dp"
            android:background="#FF0000"
            android:orientation="vertical" >
        </LinearLayout>
    </RelativeLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

编辑2

如果我将该android:clipChildren="false"属性放在父LinearLayout中,我会得到以下内容:

在此输入图像描述

android view

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

如何在选择器中设置按钮的文本样式?

按钮选择器允许为按钮的每个状态定义背景,但是如何为每个状态定义按钮的文本样式?我的目标是在禁用时使按钮变灰.所以我为按钮的禁用状态设置了一个灰色的背景,但我发现灰色文本的唯一方法是在禁用按钮时动态更改它的颜色...

有人可以帮忙吗?

谢谢

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:textColor">#ffffff</item> <!-- How to specify different color for different state? -->
    <!-- more stuff -->
</style>
Run Code Online (Sandbox Code Playgroud)

绘制/ btn_default.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true"><shape>
            <solid android:color="@color/pink" />
            <corners android:radius="6dp" />
        </shape></item>
    <item><shape>
            <solid android:color="#000000" />
            <corners android:radius="6dp" />
        </shape></item>

</selector>
Run Code Online (Sandbox Code Playgroud)

android button

24
推荐指数
1
解决办法
2万
查看次数

调用Service stopSelf()后没有调用onServiceDisconnected()

我有一个Activity我开始并绑定到下载Service.

在呼叫stopSelf()Service,onServiceDisconnected()Activity未呼叫时.

我希望它被调用,因为如果Service停止,所有绑定的活动都应该是未绑定的.

我错过了什么?

service android

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

我应该使用多少活动?

我正在开始Android做一个搜索餐馆的应用程序,欢迎一些指导!在第一个屏幕上,我想要一个带有提交按钮的搜索字段(我从Web服务获取数据),以及带有搜索结果的列表下方.点击列表中的一个项目时,它将显示一个包含餐厅详细信息的屏幕以及显示其位置的地图.我的问题是:

  • 我可以在一个活动中完成所有活动,还是应该为搜索执行活动,一个用于结果列表,一个用于餐馆描述,另一个用于地图?
  • 做一个单独的活动会使应用程序更具响应性吗?
  • 如何在正常活动中使用列表和地图(没有ListActivity和MapActivity)?

android

23
推荐指数
1
解决办法
1万
查看次数

如何在不使用notifyDataSetChanged()的情况下更新Listview中的某些数据?

我正在尝试ListView使用下载任务列表创建一个.

下载任务在Service(DownloadService)中管理.每次接收到一大块数据时,任务通过a发送进度Broadcast,由Fragment包含ListView(SavedShowListFragment)的接收.收到Broadcast消息后,SavedShowListFragment将更新适配器和触发器中下载任务的进度notifyDataSetChanged().

列表中的每一行都包含a ProgressBar,a TextView表示正在下载的文件的标题,1表示进度的数值,a Button表示下载完成时暂停/恢复下载或播放保存的节目.

问题是暂停/恢复/播放Button通常没有响应(onClick()没有被调用),我认为这是因为整个列表都经常更新notifyDataSetChanged()(每次都有一大块数据,即收到1024字节,这可能是每秒多次,特别是当有多个下载任务正在运行时).

我想我可以在下载任务中增加数据块的大小,但我真的认为我的方法根本不是最优的!

可以经常打电话notifyDataSetChanged()ListViewUI无响应吗?

有什么办法只更新一些ViewsListView行,即在我的情况ProgressBarTextView与进步的数值,而不调用notifyDataSetChanged(),这将更新整个清单吗?

要更新下载任务的进度ListView,有没有比"getChunk/sendBroadcast/updateData/notifyDataSetChanged"更好的选项?

以下是我的代码的相关部分.

下载服务中的下载任务

public class DownloadService extends Service {

    //...

    private class DownloadTask extends AsyncTask<SavedShow, Void, Map<String, Object>> {

        //...

        @Override
        protected Map<String, Object> doInBackground(SavedShow... params) { 

            //...

            BufferedInputStream in = …
Run Code Online (Sandbox Code Playgroud)

android listview notifydatasetchanged

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